目標:如果至少選擇了一個ListView項目,則淡入按鈕。如果沒有選擇項目,淡出按鈕。當主機LinearLayout animateLayoutChanges爲真時,ListView無響應
問題:它正在工作,但ListView在選擇項目後1-2秒內無響應。即我無法在ListView中選擇其他項目。
如果我從LinearLayout中刪除animateLayoutChanges
屬性,則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
生命週期方法,如果這是相關。
您是否嘗試過用無形的,而不是消失。 或 嘗試將按鈕的alpha設置爲0.5f並禁用點擊。 – Mayank 2015-04-05 05:21:08
@Mayank令人驚訝的是這個工程。文檔聲明我應該能夠使用View.Gone或View.Invisible。但是,我仍然需要按鈕來摺疊。 – 2015-04-05 05:27:48
其實你不能。 View.GONE可以讓視圖變得像以前一樣。 INVISIBLE就像將alpha設置爲0.0f。所以隨着View.GONE列表必須適應剩餘的大小。 – Mayank 2015-04-05 05:34:16