我使用item.xml创建了一个GridView
,其中包含LinearLayout
内的图片。
Gridview代码:
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:columnWidth="150dip"
android:gravity="center"
android:horizontalSpacing="10dip"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="15dip" >
</GridView>
item.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/itemLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector"
android:clickable="true"
android:gravity="center_horizontal"
android:orientation="vertical" >
<ImageView
android:id="@+id/itemIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:scaleType="matrix"
>
</ImageView>
然后我为LinearLayout
背景添加了selector.xml,以避免在点击项目时显示所选区域。
selector.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@android:color/transparent" android:state_enabled="true" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent" android:state_enabled="true" android:state_focused="true"/>
<item android:drawable="@android:color/transparent" android:state_enabled="true"/>
将android:clickable="true"
添加到item.xml LinearLayout
后,GridView
ItemClickListner
无法正常工作。否则它会起作用,但不会将{/ 2}效果应用于{{ 1}}。我想对LinearLayout
应用selector.xml效果,并且也会LinearLayout
工作。
请帮我解决这个问题。谢谢。
答案 0 :(得分:0)
只需将属性android:focussable=false
添加到item.xml中的ImageView即可。这应该可以解决问题。
<ImageView
android:id="@+id/itemIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:focussable=false
android:scaleType="matrix"
>
</ImageView>
由于您为此ImageView分配了可单击的True,因此它默认获得焦点,因此不允许单击您的GridView项目。因此将其设置为不可聚焦状态将帮助您实现两个点击事件。
答案 1 :(得分:0)
删除android:clickable =&#34; true&#34;从 item.xml 布局的线性布局和图像视图,并在imageview中添加这三个参数
android:focusable="false"
android:clickable="false"
android:focusableInTouchMode="false"
之后使用类似此参数的内容在drawable background.xml 中创建一个xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@color/focusedcolor"
<item android:state_pressed="true" android:drawable="@color/selectedcolor" />
<item android:drawable="@color/normalcolor" />
</selector>
之后,在线性布局中添加 item.xml
android:background="@drawable/background"
在我的代码中,值文件夹中的 colors.xml 类似于
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="focusedcolor">#b6c4c5</color>
<color name="selectedcolor">#ff33ffff</color>
<color name="normalcolor">#f7ff1f</color>
</resources>
而不是颜色你也可以使用drawable文件夹中的图像,如果你想要成像,而不是 background.xml ,你必须改变
android:drawable="@color/focusedcolor" line by
android:drawable="@drawable/imagename"