更改 ListView 中 TextView 的填充

Changing Padding of TextView in a ListView

我有一个列表视图和一个包含这些视图的数组适配器

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

 <CheckedTextView        
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_item"
    android:gravity="center_vertical"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:textAppearance="?android:attr/textAppearanceListItemSmall" >
 </CheckedTextView>
</LinearLayout>

我想在激活时在文本视图的左侧添加 X 填充,并在未选中时删除该填充。填充不会更新。我该如何管理?

由于您的 CheckedTextView 位于 ListView 中,您可以使用 setOnItemSelectedListener (AdapterView.OnItemSelectedListener listener) 方法在 ListView 上设置 AdapterView.OnItemClickListener 并覆盖 onItemClick(AdapterView<?> parent, View view, int position, long id)方法。

在那个 onItemClick() 方法中,您检查哪个是被点击的视图(通过比较显示被点击视图位置的 position 变量与您的 CheckedTextView的实际位置以查看它们是否匹配)。然后,如果您的用户确实点击了您的 CheckedTextView,您将检查 CheckedTextView.isChecked () 是否为真。如果为真,则以编程方式更改填充,否则就这样吧。