我有一个LinearLayout
,里面有三个孩子,两个RecyclerView
和一个ImageView
。在基于某些条件的代码中,我使用setVisibility()
启用和禁用了这些子代。
public void onNotificationPriorityMixChanged(int mix) {
Log.d(TAG, "onNotificationPriorityMixChanged() called with: mix = [" + mix + "]");
switch (mix) {
case MIX_BOTTOM_ONLY: {
topListView.setVisibility(GONE);
bottomListView.setVisibility(VISIBLE);
spacer.setVisibility(GONE);
}
break;
case MIX_TOP_ONLY: {
topListView.setVisibility(VISIBLE);
bottomListView.setVisibility(GONE);
spacer.setVisibility(GONE);
}
break;
case MIX_NONE: {
topListView.setVisibility(GONE);
bottomListView.setVisibility(GONE);
spacer.setVisibility(GONE);
}
break;
case MIX_BOTH: {
topListView.setVisibility(VISIBLE);
bottomListView.setVisibility(VISIBLE);
spacer.setVisibility(VISIBLE);
}
break;
default:
}
}
布局文件中有一个LinearLayout
,其中第一个为RecyclerView
(topListView),其后为ImageView
(spacer),然后是一个RecyclerView
(bottomListView)
问题是,当其他两个视图被禁用时,我不能仅获得一个子视图来占据整个父视图。
我的问题是我应该在XML中动态使用layout_weight
属性。谁能告诉我使用setVisibility()
和layout_weight
属性(如果有)之间的联系?
答案 0 :(得分:0)
将layout_height
中的RecyclerViews
设置为0dp
(对于垂直LinearLayout
)
我已经对此进行了测试
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:layout_weight="1"
android:visibility="visible"
android:layout_width="match_parent"
android:layout_height="0dp"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="2dp" />
<android.support.v7.widget.RecyclerView
android:layout_weight="1"
android:visibility="visible"
android:layout_width="match_parent"
android:layout_height="0dp"/>
</LinearLayout>
用于隐藏的任何视图都使用.setVisibility(View.GONE)
用于显示的任何视图都使用.setVisibility(View.VISIBLE)