【发布时间】:2014-11-14 08:55:48
【问题描述】:
我正在构建一个可以选择点击的自定义视图。我想设置一个指示可点击状态的背景。通常,我会使用 XML Drawable 来实现类似这样的功能:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" android:state_enabled="false"/>
<item android:drawable="@drawable/background_white_grey_spinner_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/background_white_grey_spinner_normal"/>
</selector>
不幸的是,它看起来没有 android:state_clickable 或 android:state_pressable 属性。考虑到android:state_long_pressable,这似乎是一个奇怪的疏忽。我错过了什么吗?
【问题讨论】:
-
这是在布局中完成的:
android:clickable="true|false"。不在drawable本身。供参考:developer.android.com/reference/android/view/… -
@Funkystein:是的,我会在布局中设置视图是否可点击,但我想使用背景来指示视图是否可点击。
-
您可以使用
state_enabled在启用或禁用时设置不同的背景颜色。其中启用意味着可点击,间接。 -
是的,好像没有。也许他们认为
state_enabled已经传达了这一点。不过,您当然可以自己实现自定义状态;它相对简单。 This (off-site) page 有一个很好的、简单的例子。顺便说一句,您提到的state_long_pressable本身就是一种自定义状态,因为它不是核心系统状态之一,而是为早已弃用的KeyboardView单独创建的状态。
标签: android android-layout android-custom-view android-drawable