我正在使用带有textviews的PopUpwindow。问题是当我点击任何一个文本时,背景颜色没有变化,虽然它在文本视图聚焦时发生变化但没有点击。
点击后我正在关闭弹出窗口,如果我没有关闭弹出窗口,那么背景颜色会根据选择器而改变:
这是我的textview背景选择器:
<item android:state_focused="true" android:drawable="@drawable/focused" />
<item android:state_pressed="true" android:drawable="@drawable/pressed" />
<item android:drawable="@drawable/priornone" /> <!-- default --> </selector>
在我的弹出窗口中我所做的就是:
TextView manage_list = (TextView)popupView.findViewById(R.id.manage_lists);
manage_list.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
Intent myIntent = new Intent(v.getContext(),ManageList.class);
popupWindow.dismiss();
startActivity(myIntent);
}});
popupwindow的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/pop_menu_bg"
android:orientation="vertical"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/manage_lists"
android:text="Manage lists"
android:background="@drawable/my_drawable"
>
</TextView>
</LinearLayout>
它非常奇怪的行为一切顺利,如果我不解散popupwindow但如果我点击文本视图背景上的popupwindow不会改变。
我做错了什么?任何帮助将不胜感激。
答案 0 :(得分:0)
我相信如果你使用上面的代码,你会没事的:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/focused" />
<item android:state_pressed="true" android:drawable="@drawable/activated" />
<item android:drawable="@drawable/priornone" />
</selector>
您无法在项目中定义两种不同的状态。
希望有所帮助。
答案 1 :(得分:0)
//当android:state_pressed="true"
也为真时,您需要删除android:state_focused="true"
。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:state_hovered="true"
android:drawable="@drawable/button_focused" /> <!-- hovered -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
编辑:您需要将Linearlayout属性设为android:clickable="false"
答案 2 :(得分:0)
你会使用像Checkbox这样的TextView,不是吗?
使用布尔标志试试这个。
private boolean clicked = false;
// ...
mytextView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
clicked = !clicked;
if(clicked){
mytextView.setBackgroundColor(yourcolorclicked);
}else{
mytextView.setBackgroundColor(yourcolorunclicked);
}
mytextView.invalidate();
}
});
答案 3 :(得分:0)
检查是否存在命名冲突。如果您的更改没有出现,由于某种命名问题与导入的库冲突而无法正常工作可能是您的主要问题。