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

Mat*_*ttC 15 java android listview

我真的把头发拉过来.一些背景.我有一个项目列表,旁边都有复选框.取消选中复选框后,会出现一个按钮,允许您从列表中删除该项目.这看起来似乎倒退,但我们只希望"选定"的项目有资格进行进一步处理,等等.这是我的布局:

<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>
Run Code Online (Sandbox Code Playgroud)

为了挽救我的生命,我不能让3个项目垂直居中.layout_gravity,gravity,layout_centerVertical,没有它的工作原理.我敢肯定我的问题是在某个地方翻转的一个小小的设置,但我真的在这个问题上结束了.

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

Joh*_*ohn 59

这个属性对我来说是一个Button使用中心RelativeLayout:

android:layout_centerInParent="true"
Run Code Online (Sandbox Code Playgroud)

看到这篇文章: 你可以将一个按钮置于RelativeLayout中心吗?


Com*_*are 24

您的问题可能不是由于布局,而是您如何夸大布局.事实上,这甚至可能是我的错,取决于你学习技术的地方......

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

适配器中inflate()的正确用法是:

膨胀(layoutId,parent,false);

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

如果您使用inflate(layoutId, null),正如我传统建议的那样,除非您尝试使用RelativeLayout行的基本布局并尝试使用垂直居中,否则生活是可以的.

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


Mur*_*phy 16

使用RelativeLayout,我在重力和layout_gravity方面没有运气.

但是android:layout_centerVertical="true"我在RelativeLayout的孩子身上找到了工作,所以如果你需要,你可以保留它.