2012-06-21 1 views
0

Я создал GridView с item.xml, который включает изображение внутри LinearLayout.Android GridView ItemClikListneter issue

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> 

Затем я добавил selector.xml для LinearLayout фона, чтобы избежать показа выбранной области, когда щелчок по пункту.

код 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, GridViewItemClickListner не work.Otherwise он работает, но не применяется selector.xml на LinearLayout. Я хочу применить эффект selector.xml для LinearLayout и работает также ItemClickListner.

Просьба помочь мне исправить эту проблему. Спасибо.

ответ

0

Просто добавьте атрибут android:focussable=false в ImageView в item.xml. это должно сделать трюк.

<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, он получает фокус по умолчанию, таким образом, не позволяя GridView элемент, чтобы быть нажата. Таким образом, настройка его на неконцентрируемое состояние поможет вам достичь обоих событий щелчка.

0

удалить андроид: интерактивный = «истина» от линейной компоновки и ImageView из item.xml макета и добавить в ImageView эти три параметра

android:focusable="false" 
android:clickable="false" 
android:focusableInTouchMode="false" 

после этого сделать XML в растяжимом background.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> 

вместо цвета и может также использовать изображение из папки вытяжке, если и хотят, чтобы изображения, чем в фон.XML вы должны изменить

android:drawable="@color/focusedcolor" line by 

android:drawable="@drawable/imagename" 
+0

чем проблема с андроида: рисуем = «@ андроида: цвет/прозрачный» background.xml (как мой код selector.xml) ?? – prs

+0

эффект selector.xml не применяется из-за android: focusable = "false" android: clickable = "false" android: focusableInTouchMode = "false". И я не хочу применять цвета для фона макета. – prs

+0

@it работает для меня, поскольку я использовал для строки списка xml u, чтобы установить фон LinearLyaout item.xml, так как я написал u, можно изменить цвет, если вы хотите прозрачный цвет, как вы использовали в ur selector.xml check Это – Khan