2012-07-12 2 views
5

Я использую PopUpwindow с текстовыми изображениями в нем. Проблема. Когда я нажимаю на любой из текстовых элементов, цвет фона не меняется, хотя он меняется, когда текстовое изображение сфокусировано, но не нажимается.Цвет текста в тексте не меняется при щелчке по popupwindow

После нажатия кнопки я отклоняя popupwindow, и если я не увольнять 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> 

в мой popupwindow все, что я делаю это:

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

Я считаю, что если вы используете код выше, вы будете в порядке:

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

Вы не можете определить два различных состояния в элементе.

Надеюсь, что это поможет.

+0

спасибо за предложение, но это не помогло, но текстовый фон не меняется при нажатии. – kay

+0

@kay Можете ли вы разместить свой XML-файл макета? Я считаю, что этот код и код других, которые отвечали на ваш вопрос, верны, поэтому проблема может быть где-то в другом месте. – Angelo

+0

Я разместил файл макета. – kay

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> 

refer here:

EDIT: вы должны дать свой атрибут LinearLayout как android:clickable="false"

+0

попробовал ваше предложение, но это не помогло, спасибо. – kay

+0

@kay У меня есть твоя проблема. см. мой отредактированный ответ. –

+0

это тоже не сработал падма. То, что происходит после того, как я нажму, - это фон с текстом, прозрачный, и popupwindow отклоняется. – kay

0

Вы будете использовать TextView как Checkbox, не так ли?

Используйте булевский флаг, чтобы попробовать это.

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(); 
    } 
}); 
+0

попробовал ваше предложение, но это не помогло, спасибо. – kay

0

Проверьте, есть ли у вас конфликт имен. В случае, если ни одно из ваших изменений не появится, возможность его не работать из-за какой-либо проблемы с именами, конфликтующей с импортированной библиотекой, может быть вашей основной проблемой.

Смежные вопросы