2015-04-28 21 views
5

używam niestandardowe tło dla elementów sieci, oraz jak zwykle to działa, ale kiedy nie kliknij na żadnym elemencie siatki (nie działa)GridView Highlight wybranego elementu

Więc co może być powód, dlaczego jej nie działa, gdy robię kliknięcie na dowolną z pozycji siatki, podczas jego pracy w trybie normalnym ..

dla imagegallery Używam this samouczek i aby wyróżnić pozycję siatki po this jednej

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

    <item android:drawable="@color/blue" android:state_pressed="true" /> 
    <item android:drawable="@color/blue" android:state_selected="true" /> 
    <item android:drawable="@color/blue" android:state_focused="true" /> 
    <item android:drawable="@color/white" /> 

</selector> 

Siatka układ przedmiotu xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/grid_background" 
    android:descendantFocusability="blocksDescendants" 
    android:padding="5dp"> 

    <ImageView 
     android:id="@+id/grid_item_image" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scaleType="centerCrop"> 
    </ImageView> 

    <FrameLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="1dip" > 

     <ProgressBar 
      android:id="@+id/loading" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:visibility="gone" /> 

    </FrameLayout> 

</RelativeLayout> 

Oto główny xml grid:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#000000"> 

    <!-- The GridView to display picture's preview --> 
    <GridView 
     android:id="@+id/grid_view" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:numColumns="auto_fit" 
     android:gravity="center" 
     android:stretchMode="columnWidth"  
     android:drawSelectorOnTop="true"  
     android:focusable="true" 
     android:clickable="true" 
     android:scrollbars="none" 
     > 
    </GridView> 

</RelativeLayout> 

To co otrzymuję jako normalne i nawet kiedy nie dotknąć żadnej z GridView Przedmiot:

enter image description here

+0

Usuń tło i spróbuj wybrać w "android: listSelector" w Gridview. – Harry

Odpowiedz

4

To może pomóc zrobić swój selektor w ten sposób

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

    <item android:drawable="@color/black" android:state_pressed="true" /> 
    <item android:drawable="@color/black" android:state_selected="true" /> 
    <item android:drawable="@color/black" android:state_focused="true" /> 
    <item android:drawable="@color/white" /> 

</selector> 

i układ względna dodać

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
     android:clickable="true" 
    android:descendantFocusability="blocksDescendants" 
    android:background="@drawable/grid_background" 
    android:padding="5dp"> 

    <ImageView 
     android:id="@+id/grid_item_image" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:focusable="false" 
     android:scaleType="centerCrop"> 
    </ImageView> 

    <FrameLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:focusable="false" 
     android:padding="1dip" > 

     <ProgressBar 
      android:focusable="false" 
      android:id="@+id/loading" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:visibility="gone" /> 

    </FrameLayout> 

</RelativeLayout> 
+0

nic się nie dzieje – Oreo

+0

usuń tę linię android: listSelector = "@ android: kolor/przezroczysty" –

+0

wypróbowany sprawdź powyższy zaktualizowany kod – Oreo

1

Napisz rozciągliwej plik dla selektora jak to nazwać selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
     <shape> 
      <solid android:color="@color/blue" /> 
     </shape> 
    </item> 

    <item android:state_pressed="false"> 
     <shape> 
      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 
</selector> 

następnie wewnątrz XML gridview Dodaj następujący dwóch liniach

android:drawSelectorOnTop="true" 
android:listSelector="@drawable/selector" 
+0

jest to praca – apk

+0

kolor znika, gdy palec jest podnoszony z pozycji siatki – Ramesh

Powiązane problemy