固定中心对齐

时间:2012-09-18 18:24:58

标签: android

我需要实现固定的中心对齐,如图所示:

http://postimage.org/image/t735us1z3/

因此,当两个TextView向左和向右增长时,标志图像始终位于中心。因此,无论文本多长时间,图像仍将位于中心。加上中间的“vs”TextView。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
 >

<TextView android:id="@+id/list_item_entry_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:ellipsize="marquee"
        android:fadingEdge="horizontal"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
         />



     <ImageView 
        android:id="@+id/flag1"
        android:layout_width="20dp"
        android:layout_height="20dp"   
        android:layout_marginLeft="5dp" 
        android:layout_marginRight="5dp" 
        android:src="@drawable/bayern25"
        android:layout_marginTop="5dp" 
      android:layout_toRightOf="@+id/list_item_entry_title"
        />

       <TextView android:text="-"
             android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:ellipsize="marquee"
        android:fadingEdge="horizontal"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
         android:layout_toRightOf="@+id/flag1"
         />


       <ImageView 
        android:id="@+id/flag2"
        android:layout_width="20dp"
        android:layout_height="20dp"  
        android:layout_marginLeft="5dp"  
          android:layout_marginTop="5dp" 
        android:src="@drawable/wolfsburg25"
        android:layout_toRightOf="@+id/text"
        />


     <TextView android:id="@+id/list_item_entry_summary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/list_item_entry_title"
        android:layout_alignLeft="@id/list_item_entry_title"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:singleLine="true"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:layout_toRightOf="@+id/flag2"
         />

2 个答案:

答案 0 :(得分:1)

由于您使用的是RelativeLayout,因此您只需要使用layout_centerInParent属性(android:layout_centerInParent =“true”)将“vs”TextView放置在中心,然后将其他组件相对于那个放置。你的代码看起来像

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/list_item_entry_title"
        android:layout_toLeftOf="@+id/flag1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:ellipsize="marquee"
        android:fadingEdge="horizontal"
        android:singleLine="true"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <ImageView
        android:id="@id/flag1"
        android:layout_toLeftOf="@+id/text"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="5dp"
        android:src="@drawable/bayern25" />

    <TextView
        android:id="@id/text"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:layout_toRightOf="@+id/flag1"
        android:ellipsize="marquee"
        android:fadingEdge="horizontal"
        android:singleLine="true"
        android:text="-"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <ImageView
        android:id="@+id/flag2"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_toRightOf="@id/text"
        android:src="@drawable/wolfsburg25" />

    <TextView
        android:id="@+id/list_item_entry_summary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/list_item_entry_title"
        android:layout_below="@id/list_item_entry_title"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_toRightOf="@id/flag2"
        android:singleLine="true"
        android:textAppearance="?android:attr/textAppearanceSmall" />

答案 1 :(得分:0)

您可以使用LinearLayout重量和重力来实现这一点,如下所示:

<LinearLayout
    android:width="match_parent"
    android:height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:width="0dp"
        android:weight="1"
        android:height="wrap_content"
        android:gravity="right"
        android:text="Team 1" />
    <TextView
        android:width="wrap_content"
        android:height="wrap_content"
        android:text="VS" />
    <TextView
        android:width="0dp"
        android:weight="1"
        android:height="wrap_content"
        android:gravity="left"
        android:text="Team 2" />
</LinearLayout>