Мой вопрос - я хочу, чтобы текст TextView, который у меня есть в настраиваемом ListView, выделил прокрутку ТОЛЬКО при выборе элемента в ListView.Когда элемент списка теряет фокус, я хочу, чтобы выделение перестало прокручиваться.Я знаю, что мне нужно установить TextView в включенное состояние ( setEnabled (true) ), чтобы прокрутка работала, однако, когда я делаю это при добавлении элементов, они ВСЕ прокручивают, что не является желаемым поведением (ноэто имеет смысл, почему это происходит).Я попытался установить их программно, используя обработчик щелчков ListView, чтобы включить TextView для включения ( setEnabled (true) ), отслеживать текущий выбранный элемент в частной переменной, а затем, наоборот, установить предыдущий просмотр TextView.статус «ложь» при нажатии нового элемента и т. д.Я надеюсь это имеет смысл.Вот некоторый код Java, который может лучше проиллюстрировать это:
private View tempListItemView = null;
if (this.tempListItemView != null) {
TextView tempTxtView = (TextView) tempListItemView.findViewById(R.id.txtArticleTitle);
tempTxtView.setSelected(false);
tempTxtView.setEllipsize(TruncateAt.END);
}
// Set marquee of currently selected list item
TextView tt = (TextView) v.findViewById(R.id.txtArticleTitle);
tt.setEllipsize(TruncateAt.MARQUEE);
tt.setSelected(true);
tempListItemView = v;
Это работает, вроде.Тем не менее, это немного неуклюже.Например, если предыдущий элемент покидает экран, он никогда не отключается, и когда я выбираю элемент списка, я теряю все пользовательские свойства listSelector, которые я установил (см. Ниже).Кроме того, у меня было несколько другое странное поведение, когда фоновый элемент прокручиваемого TextView стал черным (и даже весь ListSelector ListView полностью исчез. Ничего из этого не происходит, когда я использую клавиатуру на своем Droid. Он работает так, как должен,однако я просто пытаюсь эмулировать эту функцию при нажатии элементов списка. Я не нашел много в Интернете о том, как этого добиться. Ниже приведены фрагменты и снимки экрана.
У меня есть ListActivity, которую япривязан к ArrayAdapter с настраиваемым представлением списка. Представление содержимого, к которому привязано это действие, выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:listSelector="@drawable/list_selector"
/>
</LinearLayout>
Элемент рисования list_selector выглядит следующим образом:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable ="@drawable/maroon_list_select_bg" />
<item android:drawable="@drawable/maroon_list_select_bg" />
</selector>
Его Drawable - это просто пиксель размером 1x1, чтобы закрасить бордовый цвет фона элемента списка. В целях экономии места я прикрепил скриншот того, как выглядит пользовательский вид: (мой первый пост, поэтому я не смог: (
и вот краткий фрагмент пользовательского макета, который определяет каждый элемент списка (сmarquee TextView) ...
<TextView
android:id="@+id/txtArticleTitle"
android:textSize="16sp"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/list_item"
android:singleLine="true"
android:ellipsize="end">
</TextView>
<TextView
android:id="@+id/txtArticleSnippet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/list_desc_copy"
>
</TextView>
<TextView
android:id="@+id/txtArticleVotes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Votes: 1576"
android:textColor="@color/list_small_copy"
>
</TextView>
Пожалуйста, помните, я знаю, что мне нужно установить android: ellipsize в "marquee", чтобы получить прокрутку, но, как объяснено выше, я делал это программно для текущего выбранногоlist tiems.
У кого-нибудь есть решение для этого?Заранее спасибо, и я прошу прощения за длинный пост ... просто стараюсь быть тщательным.Еще раз спасибо!