我为这个
设置了一个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
但没有用。
答案 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)
最后我得到了答案
mygridview.setSelector(R.drawable.my_background)
像这样更改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>
将上面的drawable作为cellview的背景(用于制作gridview的每个单元格的视图)
以编程方式从gridview中选择一个单元格mygridview.setItemChecked(pos, true);
这对我有用!