Изменение цвета элемента списка в фокусе - PullRequest
0 голосов
/ 16 февраля 2011

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

Макет для просмотра списка (listview.xml)

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:orientation="horizontal" android:padding="18sp"
    android:background="@drawable/backgroundselector">
    <ImageView android:id="@+id/imageView1"
        android:layout_height="fill_parent" android:layout_gravity="center_vertical"
        android:layout_width="wrap_content" />
    <TextView android:text="TextView" android:id="@+id/textView1"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:paddingLeft="10sp" android:textSize="20sp" />
</LinearLayout>

clicked.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
   <solid android:color="#ffc61212" />
 </shape>

focussed.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
   <solid android:color="#ff26e0d7" />
 </shape>

normal.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
   <solid android:color="#ff0a4d66" />
 </shape>

и, наконец, backgroundselector.xml

<?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/focussed" /> <!-- focused -->
    <item android:state_pressed="true" android:drawable="@drawable/clicked" /> <!-- pressed -->
    <item android:drawable="@drawable/normal" /> <!-- default -->
</selector> 

Пожалуйста, мне нужна помощь, как я могу изменить цвет дочернего элемента моего списка, когда фокус на дочернем элементе ...

1 Ответ

0 голосов
/ 16 февраля 2011

Мой совет - переопределить ListView.onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) метод, который будет вызываться при нажатии элемента.

И в этом методе вы можете создать новый ArrayAdapter.Например: ArrayAdapter<String> adpater=new ArrayAdapter<String>(CurrentActivity.this,R.layout.foucs,data);, где data - массив объектов, используемый для предоставления данных для ListView (обычно мы используем класс String [] или ArrayList).

И затем, вызовите ListView.setAdapter(adapter), чтобы показать ваш новый стиль..

Надеюсь, это поможет.Я жадность :)

Ах, я нахожу новый и удобный способ сделать это.

В ListView.onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) методе просто вызовите arg1.setBackgroundColor(newColor);, чтобы изменить цвет элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...