1

RelativeLayout当按钮保持按下状态时,我必须android:clickable="true"将图像颜色从灰色更改为白色(否则如果android:clickable="false"它不起作用):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/contacts"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_weight="0.2"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:clickable="true"   <!-- here clickable = true  -->
    android:contentDescription="@string/content_description_contacts"
    android:scaleType="fitXY"
    android:src="@drawable/contacts" />

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignBottom="@id/image"
    android:paddingBottom="10dp"
    android:textColor="@drawable/text_color"
    android:text="@string/button_contacts"
    android:textSize="12sp" />    
</RelativeLayout>

在此处输入图像描述

看起来像:

在此处输入图像描述

我的contacts选择器似乎:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" 
    android:drawable="@drawable/contacts_over" />
<item android:state_selected="true"
    android:drawable="@drawable/contacts_selected" />
<item
     android:drawable="@drawable/contacts_default" />
</selector>

如您所见,我有 3 张图像:默认情况下,选中并按下。

根据文档,设置android:clickable="true"为后ImageView我停止获取onClickListener事件。

     contacts = (RelativeLayout) findViewById(R.id.contacts);
 contacts.setOnClickListener(this); 

所以我有

  • 或设置clickable="false"并且“state_pressed”不起作用
  • 或设置clickable="true"onClickListener不起作用(未收到事件)

我该怎么办,有什么解决方法吗?

谢谢,

4

3 回答 3

2

尝试设置onClickListener为 yourImageView而不是RelativeLayout.

这可能会让你感兴趣:

如何在 Android 上将 onClick 事件传递给其父级?

于 2013-04-23T10:47:02.933 回答
1

工作得很好,如果你设置Listner为你ImageviewLayout.

于 2013-04-23T10:52:39.423 回答
0

尝试使用 ImageButton 小部件而不是 ImageView。

于 2013-04-23T10:47:06.553 回答