线性布局中的setVisibility和layout_weight之间有什么联系

时间:2018-10-30 09:36:39

标签: java android xml android-studio

我有一个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属性(如果有)之间的联系?

1 个答案:

答案 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)