我希望ImageButtons
根据状态更改图像。 (与9个插科打g和facebook应用中的“喜欢”按钮相同)。
我为每个人定义了一个样式,它将选择器作为drawable引用,但是当我运行程序时,图像不会出现。你能告诉我这种方法有什么问题吗? (抱歉我的英语不好)
在values文件夹中的comment_actions_style:
<style name="LikeStyle">
<item name="android:src">@drawable/like</item>
</style>
<style name="DislikeStyle">
<item name="android:src">@drawable/dislike_normal</item>
</style>
<style name="ReplyStyle">
<item name="android:src">@drawable/reply_normal</item>
</style>
<style name="ShareStyle">
<item name="android:src">@drawable/share</item>
</style>
</resources>
和drawable文件夹中的drawable相似:(其他按钮相同)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/like_clicked" android:state_pressed="true"/>
<!-- pressed -->
<item android:drawable="@drawable/like_focused" android:state_focused="true"/>
<!-- focused -->
<item android:drawable="@drawable/like_normal"/>
<!-- default -->
</selector>
修改
我忘了提一下,我有一个列表视图,它的项目是用户注释,注释上面有按钮。
这是我的项目布局(部分内容)
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/comment_content"
android:orientation="horizontal"
>
<include
android:id="@+id/like"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
layout="@layout/comment_actions"
style="@style/LikeStyle" />
</LinearLayout>
和comment_actions布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/comment_action"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="5dip">
<ImageButton
android:id="@+id/comment_action_img"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@android:color/transparent"
/>
<TextView
android:id="@+id/comment_action_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/comment_action_img"
android:gravity="center"
android:layout_marginLeft="5dip"/>
</RelativeLayout>
如果这很重要,这些按钮也会继承布局。
答案 0 :(得分:1)
在这里,你是为comment_actions布局设置样式,它是一个相对布局,它不能响应你的“android:src”属性。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/comment_content"
android:orientation="horizontal"
>
<include
android:id="@+id/like"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
layout="@layout/comment_actions"
style="@style/LikeStyle" /> <!--here,you are setting a style for the RelativeLayout -->
</LinearLayout>