android imageview android:state_selected =" true"不工作

时间:2016-02-16 07:21:44

标签: android xml

我正在使用图像选择器来更改我的标签小部件图像图标,当我选择任何一个图像视图时,该图像视图的图像应该更改。为此,我使用了以下代码,但它运行良好,但问题是 android:state_pressed =" true" 正在运行,但 android:state_selected ="真的" 没有在任何图片视图中工作,我遇到了这个问题,任何人都可以帮助我,回答会很明显。谢谢你。

 <?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/ic_contacts_vippie_selected" android:state_selected="true"/>
<item android:drawable="@drawable/ic_contacts_vippie"/>

这是我的Imageview:

      <ImageView
        android:id="@+id/hiiMoblieContact"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/flexi_contact_selector" />

2 个答案:

答案 0 :(得分:2)

使用切换按钮或复选框或单选按钮代替图像视图。例如,我使用复选框。

 <CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/hiiMoblieContact"
    android:button="@drawable/flexi_contact_selector"/>

<强> flexi_contact_selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/ic_contacts_vippie_selected" android:state_checked="true" />
<item android:drawable="@drawable/ic_contacts_vippie" />

</selector>

希望这会对你有帮助..

答案 1 :(得分:1)

Imageview不会保存状态。但不要担心,有一个解决方法。使用toggleButtons并设置背景使用CheckableLinearlayout 作为imageview的父级。 Xml的imageview应该是这样的 -

<package_name.CheckableLinearLayout android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"
                                      android:orientation="vertical">
    <ImageView
      android:id="@+id/hiiMoblieContact"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:clickable="false"
      android:duplicateParentState="true"
      android:src="@drawable/flexi_contact_selector"/>
  </package_name.CheckableLinearLayout>

更改以粗体突出显示。现在你可以处理checkablelinearlayout的set checked方法。例如,如果您将checkacle linearlayout设置为true,则图像将自动更改。您必须在项目中创建此CheckableLinearLayout课程,其链接为 - http://developer.android.com/intl/es/samples/CustomChoiceList/src/com.example.android.customchoicelist/CheckableLinearLayout.html