我使用线性布局中的样式来创建带有文本的可点击圆圈 - 表示一周中的某一天。虽然点击功能无法正常工作,但我的形状很好。
这是我的线性布局:
<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>
我的 drawable :
<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"/>
根本没有移动circle_pressed状态,我也不知道为什么有人可以帮忙吗?
答案 0 :(得分:0)
state_first
,state_middle
和state_last
用于为特定ViewGroup中的第一个,中间个或最后一个项目创建不同的样式。没有太多的文档,所以我不知道它们的用途。
依次评估选择器中的每个项目,并应用匹配的第一个项目。所以,基本上,你的第一个项目总是匹配的。您的默认状态应该是列表中的最后一项:
<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>