自定义android.R.layout.simple_list_item_checked

时间:2015-04-01 12:25:22

标签: android listview

我想更改<{p>>预定义的drawable

android.R.layout.simple_list_item_checked有可能吗?

来自已选中enter image description here

和未选中enter image description here

已选中enter image description here

和未选中enter image description here

我不想创建自定义列表项。

1 个答案:

答案 0 :(得分:0)

这是可能的,但只能通过使用带有标准适配器的自定义布局,您可以通过使用自定义布局定义与预定义布局相同的ID,但只更改所需的布局。不幸的是,在这种情况下,android.R.layout.simple_list_item_checked的源代码默认情况下没有drawable。 (https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/simple_list_item_checked.xml)它使用checkmark属性

android:checkMark="?android:attr/textCheckMark"

我不确定您是否可以更改此设置,但我仍然建议使用带有标准适配器的自定义布局,只需将原始布局与当前布局进行比较,并使用drawable而不是复选标记定义所有相同的属性,就像下面的例子中一样:尽管如此,这取决于你。

<CheckBox android:layout_width="wrap_content"
 android:layout_height="wrap_content" 
 android:text="new checkbox"
 android:background="@drawable/checkbox_background" 
 android:button="@drawable/checkbox" />

这是根据复选框的状态直接分配保存在@drawable中的自定义图像的方法。

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_checked="true" android:state_focused="true"
  android:drawable="@drawable/first" />
 <item android:state_checked="false" android:state_focused="true"
  android:drawable="@drawable/second" />
 <item android:state_checked="false"
  android:drawable="@drawable/third" />
 <item android:state_checked="true"
  android:drawable="@drawable/fourth" />
</selector>

进一步阅读:http://developer.android.com/reference/android/widget/CompoundButton.html#setChecked%28boolean%29

更多信息:http://www.android-ios-tutorials.com/android/custom-android-checkbox-radiobutton/