未启用时,为ImageView设置不同的图标

时间:2014-02-05 08:19:59

标签: android xml android-ui

enter image description here

在我的应用程序中,我有一个滑块,可以在两个不同的线性布局之间滑动,其中有语言图像按钮,如下所示。我希望这些图标为灰度,并且只有在用户点击时才会着色。我有灰度版的所有图标,我只是错过了那个xml行。谢谢你的时间

修改 我忘了发布线性布局的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_horizontal" >

        <ImageView
            android:id="@+id/galika"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:src="@drawable/gallika"
            android:layout_weight="1" />

        <ImageView
            android:id="@+id/germanika"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:src="@drawable/germanika"
            android:layout_weight="1" />

        <ImageView
            android:id="@+id/ellinika"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:src="@drawable/ellinika"
            android:layout_weight="1" />

        <ImageView
            android:id="@+id/agglika"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:src="@drawable/agglika"
            android:layout_weight="1" />

 </LinearLayout>

3 个答案:

答案 0 :(得分:1)

使用selector来具体化状态:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_selected="true" android:color="@android:color/white" />
  <item android:state_focused="true" android:color="@android:color/white" />
  <item android:state_pressed="true" android:color="@android:color/white" />
  <item android:color="#f8f8f8" />
</selector>

您还可以在不同的状态下定义其他绘图或其他形状。

答案 1 :(得分:1)

您可以将selector用作ImageViews src。

selector_flag.xml:

 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/pressed_flag" android:state_pressed="true"/>
    <item android:drawable="@drawable/normal_flag"/>
</selector>

然后将其设置为ImageViews src

ImageView iv = new ImageView(context);
iv.setImageDrawable(getResources().getDrawable(R.drawable.selector_flag))

答案 2 :(得分:1)

创建一个xml名称,例如 flag_icon.xml ,并将其放在 drawable 文件夹中。

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

    <item android:drawable="@drawable/color_version_image" android:state_pressed="true"/>
    <item android:drawable="@drawable/greyscale_version_image"/>

</selector>

现在这个xml将充当图像选择器。将此xml设置为 ImageButton 中的drawable为...

android:background="@drawable/flag_icon"

如果你想以编程方式设置然后尝试这个......

ImageButton iv = findViewById(R.drawable.your_imagebutton_id);
iv.setImageDrawable(getResources().getDrawable(R.drawable.flag_icon))