【问题标题】:5 column layout with elements in the middle centered5列布局,中间元素居中
【发布时间】:2012-01-22 00:13:24
【问题描述】:

我想在我的 Android 应用中显示一个包含游戏分数的列表。该列表应如下所示:

如上图所示,我每行有 5 个视图元素:

  1. 第一队名
  2. 一队旗
  3. 比赛成绩
  4. 二队旗
  5. 二队名

元素 2、3 和 4 应始终位于行的中间,以便游戏的冒号和旗帜直接位于彼此上方/下方,而团队名称的长度可以变化。

到目前为止,我已经尝试过 RelativeLayout、TableLayout 和 LinearLayouts,但找不到可行的解决方案。

达到预期布局的最佳方法是什么?布局应适用于 Android 1.6,垂直和水平方向。

【问题讨论】:

    标签: android layout center


    【解决方案1】:

    一行可能如下所示:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="4"
            android:gravity="center_vertical|right"
            android:text="Team A" />
        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:gravity="center"
            android:orientation="horizontal" >
            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/icon" />
            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="1 : 2" />
            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/icon" />
        </LinearLayout>
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="4"
            android:gravity="center_vertical|left"
            android:text="Team B" />
    </LinearLayout>
    

    如果中心对象与两侧的比例不正确,请尝试更改layout_weight 的值。

    【讨论】:

    • 经过仔细检查,这种方法不适用于不同长度的团队名称。我设法找到了一个使用相关布局的解决方案,请参阅我的答案。
    【解决方案2】:

    customAdapter 的 listItem.xml 可以是:

    <RelativeLayot>
     <TextView TeamA alignParentLeft />
     <RelativeLayot alignParentcenter>
       <ImageView flag1   alignParentLeft />
       <TextView 1.2   alignParentcenter />
       <ImageView flag2  alignParentRight />
     </RelativeLayot>
     <TextView TeamB alignParentReight/>
    </RelativeLayot>
    

    【讨论】:

    • 这是正确的方向,但是内部RelativeLayout的alignParent不起作用。我仍然设法使用RelativeLayouts找到了一个可行的解决方案,请参阅我的答案。
    【解决方案3】:

    在摆弄RelativeLayouts 之后,我设法找到了以下在纵向和横向模式下工作的解决方案。

    <RelativeLayout
        android:id="@+id/mainlayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/headerLayout"
        android:layout_centerVertical="true"
        android:layout_marginBottom="5dip"
        android:layout_marginTop="5dip" >
    
        <TextView
            android:id="@+id/teamAName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@+id/innerlayout"
            android:gravity="center_vertical|right"
            android:text="Team A"
             android:textColor="@color/black"
            android:textSize="12dip"
            android:textStyle="bold" />
    
        <RelativeLayout
            android:id="@id/innerlayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:paddingLeft="6dip"
            android:paddingRight="6dip" >
    
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@+id/score"
                android:src="@drawable/de" />
    
            <TextView
                android:id="@id/score"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_marginLeft="6dip"
                android:layout_marginRight="6dip"
                android:background="@drawable/scorebox"
                android:paddingLeft="6dip"
                android:paddingRight="6dip"
                android:text="18:00"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@color/white"
                android:textStyle="bold" />
    
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/score"
                android:src="@drawable/de" />
        </RelativeLayout>
    
        <TextView
            android:id="@+id/teamBName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@id/innerlayout"
            android:gravity="center_vertical"
            android:text="Team B"
             android:textColor="@color/black"
            android:textSize="12dip"
            android:textStyle="bold" />
    </RelativeLayout>
    

    【讨论】:

      【解决方案4】:

      朋友试试:

      <LinearLayout
          android:id="@+id/linearLayoutRow"
          android:layout_width="fill_parent"
          android:layout_height="50dp" >
      
          <LinearLayout
              android:id="@+id/linearLayoutTeam1"
              android:layout_width="85dp"
              android:layout_height="fill_parent"
              android:orientation="vertical" >
          </LinearLayout>
      
          <LinearLayout
              android:id="@+id/linearLayoutFlag1"
              android:layout_width="50dp"
              android:layout_height="fill_parent"
              android:orientation="vertical" >
          </LinearLayout>
      
          <LinearLayout
              android:id="@+id/linearLayoutScore"
              android:layout_width="50dp"
              android:layout_height="fill_parent"
              android:orientation="vertical" >
          </LinearLayout>
      
          <LinearLayout
              android:id="@+id/linearLayoutFlag2"
              android:layout_width="50dp"
              android:layout_height="fill_parent"
              android:orientation="vertical" >
          </LinearLayout>
      
      
          <LinearLayout
              android:id="@+id/linearLayoutTeam2"
              android:layout_width="85dp"
              android:layout_height="fill_parent"
              android:orientation="vertical" >
          </LinearLayout>
      
      </LinearLayout>
      

      然后你编辑 XXdp ;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 2012-10-25
        • 1970-01-01
        • 2021-10-02
        相关资源
        最近更新 更多