选择器在android gridview中不起作用

时间:2015-12-26 11:53:50

标签: android android-studio android-listview android-view android-gridview

我为这个

设置了一个Android Gridview的选择器
mygridview.setSelector(R.drawable.my_background);

当我点击gridview中的一个孩子时,它工作正常(背景设置),并且在从gridview失去焦点后,背景不会消失。

但是,当我手动选择像mygridview.setSelection(position)这样的子视图时,它会设置背景,但在从gridview失去焦点时会消失

顺便说一下我的选择器是这样的:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">
            <solid android:color="#08c246"/>
            <padding android:left="-5dp" android:bottom="-5dp" android:right="-5dp" android:top="-5dp"/>

        </shape>
    </item>
</selector>

我试过设置android:state_selected android:state_checked但没有用。

2 个答案:

答案 0 :(得分:0)

我想:     mGridView.setChoiceMode(GridView.CHOICE_MODE_SINGLE)

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;    
public class J {       
    static int []arr=new int[100000];
    static int an;
    public static void main(String[] args)throws IOException {

        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        int t,i,j,n;String []s;            
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        t=Integer.parseInt(br.readLine());            
        int []ans=new int[t];
        for(i=0;i<t;++i)
        {
         n = Integer.parseInt(br.readLine());             
         s=br.readLine().split(" ");
         j=0;         an=0;
         for(String str:s)
          arr[j++]=Integer.parseInt(str);
         for(j=0;j<n;++j)
         {                    
             if(((j+1)*(n-j))%2==1)
              an=an^arr[j];         
         }
         ans[i]=an;
        }
        for(i=0;i<t;++i)
         System.out.println(ans[i]);    
    }    
}

答案 1 :(得分:0)

最后我得到了答案

  1. 请勿在gridview中设置选择器,如mygridview.setSelector(R.drawable.my_background)
  2. 像这样更改drawable:

    <item android:state_activated="true">
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">
            <solid android:color="#08c246"/>
            <padding android:left="-5dp" android:bottom="-5dp" android:right="-5dp" android:top="-5dp"/>
    
        </shape>
    </item>
    

  3. 将上面的drawable作为cellview的背景(用于制作gridview的每个单元格的视图)

  4. 以编程方式从gridview中选择一个单元格mygridview.setItemChecked(pos, true);

  5. 这对我有用!