2011-05-05 138 views
2

我有一个自定义的ListItem行,顶部有一个TextView,底部有一个TextView。我想创建一个右对齐的按钮,并垂直居中。我怎样才能在XML中做到这一点?如何在布局中将按钮对齐到右侧?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:padding="6dip"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="fill_parent"> 
     <TextView 
      android:id="@+id/toptext" 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
     android:textSize="18sp" android:textColor="#FFFFFF"/> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:id="@+id/bottomtext" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
     android:textSize="15sp" android:textColor="#FFFFFF"/> 

</LinearLayout> 
</LinearLayout> 
+1

你想要的textviews之间的按钮?重叠textviews?在textviews的右侧? – jkhouw1 2011-05-05 01:03:07

+0

右侧的文字浏览 – 2011-05-06 16:23:30

+0

这就是我提出的布局。 – jkhouw1 2011-05-06 20:35:14

回答

1

我的想法,他希望这样的事情:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight" 
    android:padding="6dip"> 
    <Button android:text="@+id/Button01" android:id="@+id/Button01" 
     android:layout_width="wrap_content" android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" android:layout_height="wrap_content" /> 

    <LinearLayout android:orientation="vertical" 
     android:layout_toLeftOf="@+id/Button01" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:id="@+id/TextLayout"> 
     <TextView android:id="@+id/toptext" android:layout_width="fill_parent" 
      android:layout_height="0dip" android:layout_weight="1" 
      android:gravity="center_vertical" android:textSize="18sp" 
      android:textColor="#FFFFFF" android:background="#FFAABB" /> 

     <TextView android:layout_width="fill_parent" 
      android:layout_height="0dip" android:layout_weight="1" android:id="@+id/bottomtext" 
      android:singleLine="true" android:ellipsize="marquee" 
      android:textSize="15sp" android:textColor="#FFFFFF" 
      android:background="#FFBBAACC" /> 
    </LinearLayout> 
</RelativeLayout> 
2

使用android:gravitysetGravity(int)

指定如何将对象的内容,无论在x轴和y轴放置,对象本身内。

http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:gravity

专门为这种情况下,right|center_vertical

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="right|center_vertical"> 

     <TextView 
      android:id="@+id/toptext" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:text="text centered"/> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/bottomtext" 
      android:text="text to the left"/> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/btn" 
      android:text="the button is at the right"/> 
</LinearLayout> 
+0

我认为他希望按钮居中,而不是按钮的内容 – jkhouw1 2011-05-05 00:57:49

+0

@ jkhouw1它只取决于你添加重力的地方。在我的答案中看到一个完整的例子。 – Aleadam 2011-05-05 01:14:35

0

你可以用类似下面的东西做到这一点:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:padding="6dip"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="fill_parent"> 
     <TextView 
      android:id="@+id/toptext" 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
     android:textSize="18sp" android:textColor="#FFFFFF"/> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:id="@+id/bottomtext" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
     android:textSize="15sp" android:textColor="#FFFFFF"/> 
     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right|center_vertical" 
     /> 

</LinearLayout> 
</LinearLayout> 
+0

这将显示文本视图底部的按钮,并将其左对齐。 – 2011-05-06 16:26:54

0

如果您使用的RelativeLayout尝试

android:layout_alignParentRight="true" 
android:layout_centerVertical="true" 

这对我的作品,但花了调整,以得到正确的很多。

而且你可能还需要

android:layout_width="wrap_content" 
相关问题