如何通过方向更改来控制视图可见性(可见/不可见)?

时间:2016-12-29 17:16:22

标签: android android-layout android-xml

我想设计这样的布局:

肖像模式xml:

<RelativeLayout>
    <ToolBar>
    <ToolBar>
    <TextView>
    </TextView>
    <VideoView>
    <VideoView>
    <Webview>
    </Webview>
</RelativeLayout>

横向模式xml:

 <RelativeLayout>
    <VideoView>
    <VideoView>
 </RelativeLayout>

其他视图对于横向模式将不可见。提前致谢。我是android开发的新手。

2 个答案:

答案 0 :(得分:1)

由于您的布局包含videoview,我认为您想在此页面上播放视频。

要阻止活动重新播放和视频重新启动,您应该将android:configChanges="orientation|screenSize"添加到活动声明,而不是管理onConfigurationChanged

中的布局

只需在onCreate`` than show hide them in onConfigurationChanged```

中查找视图
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // setContentView and another onCreate logic code

    toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    textview = findViewById(R.id.textview);
    webView = findViewById(R.id.webview);
    videoView = findViewById(R.id.videoview);

    updateLayout(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    updateLayout(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE);
}

private void updateLayout(boolean isLandscape) {  
    if (isLandscape) {
        textview.setVisibility(View.GONE);
        webview.setVisibility(View.GONE);
        getSupportActionBar().hide();
    } else {
        textview.setVisibility(View.VISIBLE);
        webview.setVisibility(View.VISIBLE);
        getSupportActionBar().show();
    }
}

答案 1 :(得分:0)

您可以为具有相同名称的两个不同方向创建两个不同的布局xml文件,并将文件存储为 layout 目录中的纵向模式以及 {中的横向版本layout-land目录下的{1}} 目录。 我认为这样做比管理运行时的可见性

更好