2014-12-22 3 views
3

Я начинаю с примера Android-браузера навигации. Я настраиваю все, что хочу, все в порядке, но я не могу найти, как изменить выбранный цвет элемента в навигационном ящике ... На данный момент он зеленый, и мне не удается это изменить.Как изменить цвет выбранного списка в ящике навигации?

Я пробовал с выделенным селектором, но никак не мог, мне удалось изменить весь фон, но не только выбранный.

Извините, если это нуб вопрос, но я проводил часы вчера на Google и здесь не найти:/

Green color i want to change


Наконец, мне удалось заставить его работать. Проблема была «android.R.layout.simple_list_item_activated_1».

Это андроид, встроенный в xml, поэтому вы не можете иметь дело с цветами, которые вы хотите.

Итак, я создал файл с именем nav_drawer_layout.xml, содержащий то же самое, что и файл android.R.layout.simple_list_item_activated_1.

Тогда я отлажен это изменение Android: фон атрибута, как это:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:gravity="center_vertical" 
    android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" 
    android:background="@drawable/nav_drawer_colors" 
    android:minHeight="?android:attr/listPreferredItemHeightSmall" /> 

Он относится к к nav_drawer_colors.xmlселекторного, что вы должны создать:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/selected_drawer" android:state_activated="true" /> 
    <item android:drawable="@color/selected_drawer" android:state_selected="true" /> 
    <item android:drawable="@color/pressed_drawer" android:state_pressed="true" /> 
    <item android:drawable="@color/backgroung_drawer" /> 
</selector> 

selected_drawer, press_drawer и backgroung_drawer определены в значениях \ colors.xml, как всегда.

Теперь все в порядке, за исключением эффекта тени, который работает везде, но не в ListView ^^ EDIT: просто указать цвет фона в макете фрагмента панели навигации (fragment_navigation_drawer.xml) и снимите <item android:drawable="@color/backgroung_drawer" /> в nav_drawer_colors.xml файл :)

Надеюсь, что это поможет другим, которые имеют ту же самую проблему :)

+0

Использовать список селекторов для Listview – RockStar

ответ

6

Через кодирования можно достичь с помощью этого по пункту щелчку ListView:

int save = -1; 
listview.setOnItemClickListener(new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
        // TODO Auto-generated method stub 

        parent.getChildAt(position).setBackgroundColor(
          Color.parseColor("#A9BCF5")); 

        if (save != -1 && save != position) { 
         parent.getChildAt(save).setBackgroundColor(
           Color.parseColor("#d6e6ff")); 
        } 

        save = position; 
      }); 

Использование Selector:

сделать один файл с именем select.xml в drawable папке.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="false" android:drawable="@color/green" /> 
<item android:drawable="@color/transparent" /> 
</selector> 

Теперь задайте этот файл как Listselector для ListView в XML-файле.Мол,

android:listselector="@drawable/select" 

или использовать в качестве фона слишком

android:background="@drawable/select" 
+0

Спасибо за ваш ответ! Когда я пытаюсь программно работать, но в первый раз, когда я открываю ящик, он все еще зеленый. Когда я меняю выбранный, и я вернусь, все в порядке, это хороший цвет. Я не нашел, где инициализировать хороший цвет. И с селектором он все еще не работает, я могу изменить фон, но это похоже на то, что приложение не распознает выбранное состояние. – Shoyun

+0

И вы сказали: «Теперь установите этот файл как Listselector для ListView в xml-файле. Like, android: listselector =" @ drawable/select "" Я не понимал, где. Я попытался в свой файл fragment_navigation_drawer.xml, но я получаю ошибки. – Shoyun

+0

для вашего списка. – RockStar

2

Создать файл XML в drawble

list_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/list_item_bg_normal" android:state_activated="false"/> 
    <item android:drawable="@drawable/list_item_bg_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/list_item_bg_pressed" android:state_activated="true"/> 

</selector> 

list_item_bg_normal.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <gradient 
     android:startColor="@color/list_background_pressed" 
     android:endColor="@color/list_background_pressed" 
     android:angle="90" /> 

</shape> 

list_item_bg_pressed.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

<gradient 

     android:startColor="#aed200" 

     android:endColor="#aed200" 

     android:angle="90" /> 

</shape> 


<ListView 
     android:id="@+id/listview_drawer" 
     android:layout_width="match_parent" 
     android:layout_gravity="start" 
     android:layout_height="match_parent" 

     android:background="@drawable/list_selector" 
     android:dividerHeight="1dp" /> 
+0

Спасибо за ваш ответ! К сожалению, похоже, что приложение не распознает активированное, сфокусированное или выбранное состояние. Он применяет хороший backgroung, но выбранный по-прежнему зеленый:/ – Shoyun

1

Попробуйте это:

1.Create list_selector.xml в вытяжке папке

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@color/dark_green" android:state_activated="true" /> 
<item android:drawable="@color/sliver" android:state_focused="true" /> 
</selector> 

2.Then набор list_selector.xml в качестве фона в listview настраиваемый макет.

android:background="@drawable/list_selector" 
+1

Спасибо за ваш ответ! К сожалению, похоже, что приложение не распознает состояние, активированное, сфокусированное или выбранное. Он применяет хороший backgroung, но выбранный по-прежнему зеленый: / – Shoyun