android中为gridview项目设置bgcolor时出现问题
这可能很简单,但我找不到解决方案。问题是在onitemlongclicklistener方法内设置gridview项的背景色 我有两个线性布局,一个包含textview和gridview,另一个包含一些按钮(我将此布局设置为屏幕顶部的菜单栏)。我使用setVisibility(View.GONE)在屏幕上隐藏第二个项目,当我执行ItemLong单击gridview项目时,第二个项目将使用setVisibility(View.VISIBLE)显示,同时我要更改单击/选定项目的颜色 一切正常,但无论何时第二个布局可见,还是无论何时滚动gridview,单击/选择的bgcolor都会消失 我尝试了很多方法,但都没能解决这个问题。请看一下我的代码,告诉我我做错了什么android中为gridview项目设置bgcolor时出现问题,android,android-layout,gridview,Android,Android Layout,Gridview,这可能很简单,但我找不到解决方案。问题是在onitemlongclicklistener方法内设置gridview项的背景色 我有两个线性布局,一个包含textview和gridview,另一个包含一些按钮(我将此布局设置为屏幕顶部的菜单栏)。我使用setVisibility(View.GONE)在屏幕上隐藏第二个项目,当我执行ItemLong单击gridview项目时,第二个项目将使用setVisibility(View.VISIBLE)显示,同时我要更改单击/选定项目的颜色 一切正常,但无论
gv.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View strings,
int position, long id) {
final Option o = dir.get(position);
//gv.performItemClick(gv, position,gv.getItemIdAtPosition(position));
/* if(pos!=-1)
{
gv.getChildAt(pos).setBackgroundColor(0xffffffff);
}*/
strings.setSelected(true);
// TextView tx=(TextView)strings.findViewById(R.id.grid_item_label);
// tx.findViewById(id).setBackgroundColor(0xff0000ff);
/*if(!o.getData().equalsIgnoreCase("o")){
//gv.getChildAt(position).setSelected(true);
fill(new File(new File(o.getPath()).getParent()),position);
}*/
/*try
{
gv.getSelectedView().setBackgroundColor(0xffcccccc);
}
catch(Exception e){
Toast.makeText(FffsdActivity.this, "ok\n"+e,Toast.LENGTH_SHORT).show();
}*/
/*for(int i=0;i<nofifo;i++)
{
try{
if(gv.getChildAt(i).isSelected())
{
gv.getChildAt(i).setBackgroundColor(0xffbbbbbb);
// Toast.makeText(FffsdActivity.this, "yes ok\n"+i,Toast.LENGTH_SHORT).show();
}
else{
gv.getChildAt(i).setBackgroundColor(0xffffffff);
//Toast.makeText(FffsdActivity.this, "no ok\n"+i,Toast.LENGTH_SHORT).show();
}
}
catch(Exception e)
{
Toast.makeText(FffsdActivity.this, "i wanna e :"+e+"\n"+i,Toast.LENGTH_SHORT).show();
}
try{
gv.getChildAt(i).setSelected(false);
//Toast.makeText(FffsdActivity.this, "gv ok\n"+i,Toast.LENGTH_SHORT).show();
}catch(Exception e){
Toast.makeText(FffsdActivity.this, "i wanna setselected e :"+e+"\n"+i,Toast.LENGTH_SHORT).show();
}
}*/
// Toast.makeText(FffsdActivity.this, "i wanna c :"+gv.getChildAt(position).isSelected(),Toast.LENGTH_LONG).show();
//gv.getSelectedView().setBackgroundColor(0xffcccccc);
pos=position;
if(o.getData().equalsIgnoreCase("parent directory"))
{
fill(new File(o.getPath()),-1);
}
else if(o.getData().equalsIgnoreCase("folder"))
{
llfftools.setVisibility(View.VISIBLE);
TranslateAnimation slide = new TranslateAnimation(0, 0,-llfftools.getHeight(),0 );
slide.setDuration(100);
slide.setFillAfter(true);
llfftools.startAnimation(slide);
//fill(new File(new File(o.getPath()).getParent()));
onFolderClick(o);
//gv.getChildAt(position).setBackgroundColor(0xffaaaaaa);
}
gv.setOnItemLongClickListener(新的OnItemLongClickListener(){
公共布尔值长单击(AdapterView父项、视图字符串、,
内部位置,长id){
最终选项o=直接获取(位置);
//gv.performItemClick(gv,position,gv.getItemIdAtPosition(position));
/*如果(位置!=-1)
{
gv.getChildAt(位置).setBackgroundColor(0xFFFFFF);
}*/
strings.setSelected(true);
//TextView tx=(TextView)strings.findViewById(R.id.grid\u item\u label);
//tx.findViewById(id).setBackgroundColor(0xff0000ff);
/*如果(!o.getData().equalsIgnoreCase(“o”)){
//gv.getChildAt(位置).setSelected(正确);
填充(新文件(新文件(o.getPath()).getParent()),位置);
}*/
/*试一试
{
gv.getSelectedView().setBackgroundColor(0xFFCCCC);
}
捕获(例外e){
Toast.makeText(FffsdActivity.this,“ok\n”+e,Toast.LENGTH\u SHORT.show();
}*/
/*对于(inti=0;i10)?mobileValues.get(position.getName()。子字符串(0,9)+“.”:mobileValues.get(position.getName();
if(mobileValues.get(position).getPosition()==position&&mobileValues.get(position).getPosition()!=-1)
{
textView.setText(iname);
textView.setTextColor(0xff0000ff);
}
否则{
textView.setText(iname);
}
//基于选定文本设置图像
最终ImageView ImageView=(ImageView)gridView.findViewById(R.id.grid\u item\u image);
/*setOnLongClickListener(新的OnLongClickListener(){
仅长按公共布尔值(视图v){
gridView.setBackgroundColor(0xffaaaaaa);
//TODO自动生成的方法存根
返回false;
}
});*/
字符串mobile=mobileValues.get(position.getData();
如果(移动==“o”)
{
//无所事事
setImageResource(R.drawable.white);
}
else if(mobile==“父目录”)
{
setImageResource(R.drawable.parent);
}
else if(手机==“文件夹”)
{
setImageResource(R.drawable.folderg);
}
否则{
setImageResource(R.drawable.picicon);
}
返回gridView;
}
public int getCount(){
返回mobileValues.size();
}
公共对象getItem(int位置){
返回null;
}
公共长getItemId(int位置){
返回0;
}
}
提前感谢,如果您还需要其他信息,请告诉我……在您的XML中,将android:background属性设置为如下XML:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/home_btn_sessions_pressed"
android:state_focused="true"
android:state_pressed="true" />
<item android:drawable="@drawable/home_btn_sessions_pressed"
android:state_focused="false"
android:state_pressed="true" />
<item android:drawable="@drawable/home_btn_sessions_selected" android:state_focused="true" />
<item android:drawable="@drawable/home_btn_sessions_default"
android:state_focused="false"
android:state_pressed="false" /> </selector>
不需要在此处编写Java代码。您好,谢谢您的回复,我也尝试过这一个,但不起作用。您好,我找到了解决问题的方法,而且效果非常好。这是真正帮助我的页面:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/home_btn_sessions_pressed"
android:state_focused="true"
android:state_pressed="true" />
<item android:drawable="@drawable/home_btn_sessions_pressed"
android:state_focused="false"
android:state_pressed="true" />
<item android:drawable="@drawable/home_btn_sessions_selected" android:state_focused="true" />
<item android:drawable="@drawable/home_btn_sessions_default"
android:state_focused="false"
android:state_pressed="false" /> </selector>