2013-12-02 1 views
0

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

zoomOut = (TextView)findViewById(R.id.zoom_out); 
zoomOut.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     boolean maxLevel = mapFragment.zoomOut(); 
     zoomOut.setEnabled(maxLevel); 
    } 
}); 

И ресурсы:

<TextView 
     android:id="@+id/zoom_out" 
     android:layout_width="@dimen/map_button_size_small" 
     android:layout_height="@dimen/map_button_size_small" 
     android:background="@drawable/floor_button_bg" 
     android:gravity="center" 
     android:text="&#8211;" 
     android:textSize="28sp" 
     android:textColor="@color/btn_map_text_color" /> 

Вот состояние список рисует на мой взгляд:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/btn_map_bg_selected" /> 
     </shape> 
    </item> 

    <item android:state_selected="true"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/btn_map_bg_selected" /> 
     </shape>  
    </item> 

    <item android:state_enabled="false"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 

</selector> 

Когда я уменьшить до максимального уровня, вид отключен (не кликабельны), но фон одинаков. Спасибо за помощь.

ответ

1

Попробуйте изменить порядок пунктов:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 


    <item android:state_enabled="false"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 
    <item android:state_pressed="true"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/btn_map_bg_selected" /> 
     </shape> 
    </item> 

    <item android:state_selected="true"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/btn_map_bg_selected" /> 
     </shape>  
    </item> 

</selector> 

Selector применяет первый элемент, который соответствует условию, в вашем случае TextView должен находиться в выбранном или нажатом состоянии, так применяется этот элемент.

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