Goal: Если выбран хотя бы один элемент ListView, затухайте кнопкой. Замените кнопку, если элементы не выбраны.ListView не отвечает, если хост LinearLayout animateLayoutChanges является истинным
Задача: Работает, но ListView не реагирует на 1 - 2 секунды после выбора элемента. То есть Я не могу выбрать другие элементы в ListView.
Если я удалю атрибут animateLayoutChanges
из LinearLayout, ListView останется отзывчивым.
Вот упрощенный макет:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:animateLayoutChanges="true">
<ListView
android:id="@+id/category_listview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:layout_weight="1"
android:background="@drawable/category_list_border"
android:choiceMode="multipleChoice"
android:divider="@color/material_grey_400"
android:dividerHeight="0.5dp"
android:padding="0.5dp" />
<Button
android:id="@+id/study_button"
android:visibility="gone"
style="?android:attr/borderlessButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:text="@string/study_now" />
</LinearLayout>
А вот код, который устанавливает видимость кнопки:
itemListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View selectedView, int position, long rowId) {
Log.d(TAG, "List item selected");
if (itemListView.getCheckedItemCount() == 0) {
studyNowButton.setVisibility(View.GONE);
} else {
studyNowButton.setVisibility(View.VISIBLE);
}
}
});
Это происходит в методе onCreateView
жизненного цикла фрагмента, если это Соответствующий.
Вы пробовали использовать INVISIBLE вместо GONE. OR Попробуйте установить альфа для кнопок на 0.5f и отключите щелчок. – Mayank
@Mayank Удивительно это работает. Документация заявляет, что я должен иметь возможность использовать View.Gone или View.Invisible. Тем не менее, мне все еще нужна кнопка для развала. –
На самом деле вы не можете. View.GONE делает вид слоеного, как будто его там никогда не было. INVISIBLE - это как установка альфа-значения в 0.0f. Поэтому с View.GONE список должен соответствовать оставшемуся размеру. – Mayank