如何提供自定义样式,使我能够在按钮中将corners
和drawable
放入其中。我实现这个的当前方式给了我一个错误:
主要实施背景:
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/comment"
android:state_focused="false"
android:state_pressed="false"
android:state_selected="false"/>
<item android:drawable="@drawable/comment_pressed"
android:state_focused="false"
android:state_pressed="true"
android:state_selected="false"/>
</selector>
comment.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/purple"/>
<corners android:radius="4dp"/>
</shape>
comment_pressed:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@drawable/abs__list_selector_background_transition_holo_light"/>
<corners android:radius="4dp"/>
</shape>
此处@drawable/abs__list_selector_background_transition_holo_light
可以从Sherlock
库中提取。我确实知道错误来自这里。无论如何我能做到这一点?弯曲的边缘加上可绘制的项目?
答案 0 :(得分:1)
如果查看Sherlock
库中使用的资源,您会看到abs__list_selector_background_transition_holo_light包含以下内容:
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/abs__list_pressed_holo_light" />
<item android:drawable="@drawable/abs__list_longpressed_holo" />
</transition>
其中涉及以下9Patch图像:
abs__list_pressed_holo_light
abs__list_longpressed_holo
<corners android:radius="x"/>
属性用于<shape>
个项目,对9Patch drawables没有意义。
要解决这个问题,你可以;
或
<transition>
中的9Patch项目替换为您自己的&#34;矩形&#34; <shape>
个项目。设置这些<shape>
项的颜色以模仿9Patches中使用的颜色。然后,您就可以将<corners>
属性与这些&#39;&#39;一起使用。项目。 修改强>
您需要了解Sherlock库中的abs__list_pressed_holo_light
和abs__list_longpressed_holo
文件不是纯色十六进制值。它们是9个补丁png位图。你写的地方;
<solid android:color="@drawable/abs__list_selector_background_transition_holo_light"/>
...在你的xml中,你实际上指的是两个位图而不是一个颜色值。
在我之前建议的两种可能的解决方案中,我认为第二种选择在您的情况下可能是最好的。以下是您如何做到这一步的一步一步。
1)创建两个<shape>
drawable并将其保存在drawable
文件夹中:
my_holo_light_blue_shape
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#9933B5E5"/>
<corners android:radius="4dp"/>
</shape>
my_holo_dark_blue_shape
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#CC0099CC"/>
<corners android:radius="4dp"/>
</shape>
2)创建自己的<transition>
drawable并再次将其保存在drawable
文件夹中:
my_holo_blue_transition
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/my_holo_light_blue_shape" />
<item android:drawable="@drawable/my_holo_dark_blue_shape" />
</transition>
3)然后,您可以在选择器中使用新的<transition>
drawable作为按下状态:
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/comment"
android:state_focused="false"
android:state_pressed="false"
android:state_selected="false"/>
<item android:drawable="@drawable/my_holo_blue_transition"
android:state_focused="false"
android:state_pressed="true"
android:state_selected="false"/>
</selector>