在自定义 ListView 的相对布局中居中居中的 Android 布局

2022-09-03 08:20:12

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

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

编辑:我知道文本视图是“fill_vertical”,这是我正在尝试的一些随机的东西。


答案 1

这个属性对我有用,使用:ButtonRelativeLayout

android:layout_centerInParent="true"

看到这篇文章:你能在相对布局中居中一个按钮吗?


答案 2

您的问题可能不是由于布局,而是您如何使布局膨胀。事实上,这甚至可能是我的错,这取决于你在哪里学到的技术......

引用无处不在的罗曼·盖伊(Romain Guy)的话

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

inflate(layoutId, parent, false);

传递父级(在 getView() 中作为参数提供给您)允许 UI 工具包创建相应的 LayoutParams 对象。传递 false 会告诉工具包不要调用 parent.addView(theInflateChild),因为 ListView 稍后会发挥自己的魔力。

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

我將更新我的書籍等,以反映未來幾週的新建議。


推荐