代码之家  ›  专栏  ›  技术社区  ›  MattC

Android布局以RelativeLayout为中心,用于定制ListView

  •  15
  • MattC  · 技术社区  · 15 年前

    我真的为这件事担心极了。一些背景。我有一个项目列表,旁边都有复选框。取消选中复选框时,会出现一个按钮,允许您从列表中删除该项目。这一点一开始似乎有些倒退,但我们只希望“选定”的项目符合进一步处理的条件,等等。这是我的布局:

    <RelativeLayout android:id="@+id/rlBlahBlah" 
                    android:layout_width="fill_parent" 
                    android:layout_height="wrap_content"
                    android:minHeight="?android:attr/listPreferredItemHeight"
                    xmlns:android="http://schemas.android.com/apk/res/android">
      <CheckBox android:text="" 
                android:id="@+id/cbDeleteItem" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:focusable="false"
                />
      <TextView android:text="" 
                android:id="@+id/tvItemText" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:textSize="14dip"
                android:paddingLeft="3dip"
                android:paddingRight="3dip"
                android:paddingTop="13dip"
                android:gravity="fill_vertical"
                android:layout_toRightOf="@id/cbDeleteItem"
                />
      <Button android:layout_height="wrap_content" 
              android:id="@+id/btnDelete" 
              android:text="Delete" 
              android:layout_width="wrap_content"
              android:layout_alignParentRight="true"
              android:gravity="center_vertical"
              android:focusable="false"
              />
    </RelativeLayout>
    

    我无法让这3个项目在我的行中垂直居中以挽救我的生命。 layout_gravity , gravity , layout_centerVertical 没有一个是有效的。我确信我的问题是一些微小的背景,但我真的对此束手无策。

    编辑:我知道文本视图是“垂直填充”,这是我尝试的一些随机的东西。

    6 回复  |  直到 15 年前
        1
  •  59
  •   Community CDub    7 年前

    这个属性对我很有用 Button RelativeLayout :

    android:layout_centerInParent="true"
    

    请参阅此帖子: Can you center a Button in RelativeLayout?

        2
  •  24
  •   CommonsWare    15 年前

    您的问题可能不是由于布局,而是您如何扩展布局。事实上,这甚至可能是我的错,这取决于你在哪里学会了你的技术。。。

    Romain Guy :

    适配器是:

    传递父对象(作为子对象提供给您) getView()中的参数允许用户界面 工具箱来创建适当的 LayoutParams对象。假传递 告诉工具箱不要调用 parent.addView(inflatechild),自 在…上

    inflate(layoutId, null) ,正如我一直建议的,除非你尝试使用 RelativeLayout 作为行的基本布局,尝试使用垂直居中。

    我将在未来几周更新我的书籍等,以反映新的建议。

        3
  •  16
  •   Murphy    14 年前

    但是 android:layout_centerVertical="true"

        4
  •  2
  •   MattC    15 年前

    这是一个布局,最终完全符合我的要求。一旦我知道它忽略了我,我就抛弃了RelativeLayout layout_gravity 属性(当然现在我找不到帖子)。无论哪种方式,嵌套线性布局都为我带来了好处:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:minHeight="?android:attr/listPreferredItemHeight"
        android:id="@+id/llBlahBlahRowMain"
        android:padding="6dip">
        <CheckBox android:text="" 
                  android:id="@+id/cbDeleteItem" 
                  android:layout_width="wrap_content" 
                  android:layout_height="wrap_content"
                  android:layout_gravity="center_vertical"
                  android:focusable="false"
                  />
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_gravity="center_vertical"
            android:layout_height="wrap_content">
             <TextView 
                android:text="blah blah dynamically replaced text" 
                android:id="@+id/tvItemText" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:layout_weight="1"
                android:textSize="14dip"
                android:paddingLeft="3dip"
                android:layout_gravity="center_vertical"
                />
        </LinearLayout>
        <Button android:layout_width="wrap_content"
              android:layout_height="wrap_content" 
              android:id="@+id/btnDelete" 
              android:text="Delete" 
              android:layout_gravity="center_vertical" 
              android:focusable="false"
              />
    </LinearLayout>
    
        5
  •  1
  •   Carnell    15 年前

    您是否尝试过android:gravity=“center\u horizontal”作为参考 here

        6
  •  1
  •   Luiz Vianna    13 年前

    <TextView android:id="@+id/principal_li_descricao" 
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:layout_marginLeft="10dip" 
        android:textColor="#ff000000" 
        android:layout_centerVertical="true"
        android:gravity="center_vertical"
        android:layout_alignBottom="@+id/principal_li_icone"
        android:layout_toRightOf="@+id/principal_li_icone"/>
    

    谢谢