5

我正在使用带有 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);

 }});

弹出窗口的布局文件:

<?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>

如果我不关闭弹出窗口,它的非常奇怪的行为一切正常,但如果我关闭点击时的弹出窗口 textview 背景不会改变。

我究竟做错了什么?任何帮助将不胜感激。

4

4 回答 4

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>

您不能在一个项目中定义两种不同的状态。

希望有帮助。

于 2012-07-12T14:49:05.033 回答
0

检查您是否有命名冲突。如果您的任何更改都没有出现,那么由于某种命名问题与导入的库冲突而导致它无法正常工作的可能性可能是您的主要问题。

于 2013-09-11T22:06:34.610 回答
0

//你需要删除android:state_pressed="true"whenandroid:state_focused="true"也是 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"

于 2012-07-12T14:50:09.063 回答
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();
    }
});
于 2012-07-12T14:50:27.233 回答