xml居中textview到左边
我尝试在我的屏幕顶部创建一些笔画,其中显示4件东西。左侧的后退按钮,中间的水平名称以及右侧的scoreInfoOne和scoreInfoTwo,但是位于下方。我使用下面的代码,但奇怪的是,关卡名称看起来并不居中,scoreInfoTwo的值越长,关卡名称就越左。有任何想法吗?xml居中textview到左边
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="35dp"
android:background="#25ab89"
android:orientation="horizontal"
android:weightSum="4" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/ivBackButton"
android:layout_width="18dp"
android:layout_height="18dp"
android:src="@drawable/arrow" />
</LinearLayout>
<TextView
android:id="@+id/tvScoreBoard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="2"
android:gravity="center"
android:text="level"
android:textColor="#ffffff"
android:textSize="18dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="right"
android:orientation="vertical"
android:paddingRight="2dp" >
<TextView
android:id="@+id/tvScoreInfoOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="0/30"
android:textColor="#ffffff"
android:textSize="12dp" />
<TextView
android:id="@+id/tvScoreInfoTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="score:"
android:textColor="#ffffff"
android:textSize="12dp" >
</TextView>
</LinearLayout>
你的孩子的意见,必须在layout_width设置为零:
android:layout_width="0px"
所以,你的布局会再看看这样的:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="35dp"
android:background="#25ab89"
android:orientation="horizontal"
android:weightSum="4" >
<LinearLayout
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/ivBackButton"
android:layout_width="18dp"
android:layout_height="18dp"
android:src="@drawable/arrow" />
</LinearLayout>
<TextView
android:id="@+id/tvScoreBoard"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="2"
android:gravity="center"
android:text="level"
android:textColor="#ffffff"
android:textSize="18dp" />
<LinearLayout
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="right"
android:orientation="vertical"
android:paddingRight="2dp" >
<TextView
android:id="@+id/tvScoreInfoOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="0/30"
android:textColor="#ffffff"
android:textSize="12dp" />
<TextView
android:id="@+id/tvScoreInfoTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="score:"
android:textColor="#ffffff"
android:textSize="12dp" >
</TextView>
</LinearLayout>
首先,你不能在LinearLayout
使用android:layout_gravity="anything"
。对于LinearLayout
,您可以使用权重来定义要使用多少空间。对于您正在尝试做的事情,我建议您使用RelativeLayout
,然后您可以使用android:layout_below="@+id/other_textview
来定义您想要的TextView
或其他项目的位置,并且有很多android:layout_[direction]
可供选择,并且可以使用layout_gravity="center_horizontal"
。
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="35dp"
android:background="#25ab89">
<ImageView
android:id="@+id/ivBackButton"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/arrow" />
<TextView
android:id="@+id/tvScoreBoard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_below="@id/ivBackButton"
android:gravity="center"
android:text="level"
android:textColor="#ffffff"
android:textSize="18dp" />
<TextView
android:id="@+id/tvScoreInfoOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_below="@id/tvScoreBoard"
android:alignParentRight="true"
android:text="0/30"
android:textColor="#ffffff"
android:textSize="12dp" />
<TextView
android:id="@+id/tvScoreInfoTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_below="@id/tvScoreInfoTwo"
android:alignParentRight="true"
android:text="score:"
android:textColor="#ffffff"
android:textSize="12dp" />
</RelativeLayout>
感谢@Matt,也应该工作..这是更少的代码。前三个项目彼此相邻,所以我应该使用onRightOf我猜。 – 2013-02-21 20:08:04
我只是试图得到你想要做的事情,然后写我的代码来匹配。你可以很容易地通过使用'layout_toRightOf =“”'等快速改变它。 – Matt 2013-02-21 20:09:48
非常感谢你,这是诀窍!你能解释我出了什么问题吗?我使用了包装内容,它不应该占据比我给予的重量更多的地方,不是吗? – 2013-02-21 20:04:41
'wrap_content'将忽略权重值。您应该始终使用'0px'(或任何其他测量 - “dip”,“dp”等)在布局方向上。因此,对于加权水平布局,您将宽度设置为0,对于垂直布局,您可以将layout_height设置为零。 – Phil 2013-02-21 20:06:42