Android布局以RelativeLayout为中心定制ListView

我真的把我的头发拉出来。 一些背景。 我有一个项目列表,旁边都有checkbox。 当您取消selectcheckbox时,会出现一个button,允许您从列表中删除该项目。 这起初似乎倒退了,但我们只希望“选定”的项目有资格进一步处理,等等。这是我的布局:

<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> 

我无法将这三件物品垂直放在我的排中,以挽救我的生命。 layout_gravitygravitylayout_centerVertical ,它们都layout_gravity 。 我敢肯定,我的问题是在某个地方轻微的转换,但是我真的在这个问题上有了自己的想法。

编辑:我知道textview是“fill_vertical”,这是我尝试的一些随机的东西。

  • 如何摆脱过度curl的光芒
  • Android ListView当前滚动位置Y像素
  • 自定义单选ListView
  • java.lang.ClassCastException:android.widget.LinearLayout不能转换为android.widget.ListView
  • 不能添加标题视图列表 - setAdapter已被调用
  • listViewdynamic添加项目
  • 自定义ListView和上下文菜单。 怎么弄呢?
  • 点击button后Android打开上下文菜单
  • 您的问题可能不是由于布局,但如何膨胀的布局。 事实上,这可能是我的错,取决于你学习技术的地方。

    引用无所不在的罗曼·盖伊 :

    在适配器中正确使用inflate()是:

    inflate(layoutId,parent,false);

    传递父(作为getView()中的参数给予您)允许UI工具包创build适当的LayoutParams对象。 传递false会告诉工具包不要调用parent.addView(theInflateChild),因为ListView稍后会做自己的魔术。

    如果您使用inflate(layoutId, null) ,正如我一直以来build议的那样,除非您尝试使用RelativeLayout作为行的基本布局,并尝试使用垂直居中,否则生活还行。

    我将会更新我的书籍,以反映未来几周的新build议。

    这个属性为我使用RelativeLayout一个Button居中:

     android:layout_centerInParent="true" 

    看到这个post: 你能在一个Button中居中RelativeLayout吗?

    使用RelativeLayout,我没有运气与重力或layout_gravity。

    android:layout_centerVertical="true"为我定位在我的RelativeLayout的孩子,所以你可以保留它,如果你需要。

    这是一个布局,最终做到了我想要的。 我知道它忽略了layout_gravity属性(当然现在我找不到这个post),所以我抛弃了RelativeLayout。 无论哪种方式,嵌套LinearLayouts为我做的伎俩:

     <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> 

    你有没有尝试过android:gravity =“center_horizo​​ntal” 这里引用

    我做了一个替代解决scheme,为我工作。 我把我的文本框元素,属性android:layout_height =“fill_parent”。 这样,文本元素就填满了所有的父项,所以内容正确alignment:)

     <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"/> 

    谢谢