我在线性布局中使用一种样式来创建一个带文本的可点击圆圈,表示一周中的某一天。我把形状做得很好,尽管点击功能不能正常工作。
这是我的线性布局:
<LinearLayout
android:layout_height="40dp"
android:layout_width="40dp"
android:layout_weight="1"
android:gravity="center"
android:clickable="true"
android:focusable="true"
style="@style/circleButton_style"
android:saveEnabled="true"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textSize="10sp"
android:textStyle="bold"
android:singleLine="true"
android:text="S"/>
</LinearLayout>
我的风格:
<style name="circleButton_style" parent="AppTheme">
<item name="android:background">@drawable/circle_stand_sel</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:minHeight">48dp</item>
<item name="android:paddingLeft">5dp</item>
<item name="android:paddingRight">5dp</item>
</style>
我的可提取:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- initial state state -->
<item android:drawable="@drawable/circle" android:state_first="false" />
<!-- disabled state -->
<item android:drawable="@drawable/circle" android:state_enabled="false"/>
<!-- enabled and pressed state -->
<item android:drawable="@drawable/circle_pressed" android:state_enabled="true" android:state_pressed="true"/>
<!-- enabled and focused state -->
<item android:drawable="@drawable/circle_pressed" android:state_enabled="true" android:state_focused="true"/>
<!-- enabled state -->
<item android:drawable="@drawable/circle_pressed" android:state_enabled="true"/>
它根本没有移动循环压缩状态,我不知道为什么。。有人能帮忙吗?
state_first
、state_middle
和state_last
用于为特定ViewGroups中的第一项、中间项或最后项创建不同的样式。没有太多的文档,所以我不知道它们在哪里使用。
选择器中的每个项目都将按顺序求值,并应用第一个匹配的项目。所以,基本上,你的第一件物品总是匹配的。您的默认状态应该是列表中的最后一项:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/circle_pressed"
android:state_pressed="true"/>
<item android:drawable="@drawable/circle_pressed"
android:state_focused="true"/>
<item android:drawable="@drawable/circle"/>
</selector>