如何通过方向更改控制视图可见性(可见/不可见)? [复制]
Posted
技术标签:
【中文标题】如何通过方向更改控制视图可见性(可见/不可见)? [复制]【英文标题】:How can I control views visibility (visible/invisible) with orientation change? [duplicate] 【发布时间】:2016-12-29 17:16:22 【问题描述】:我想设计这样的布局:
纵向模式xml:
<RelativeLayout>
<ToolBar>
<ToolBar>
<TextView>
</TextView>
<VideoView>
<VideoView>
<Webview>
</Webview>
</RelativeLayout>
横向模式xml:
<RelativeLayout>
<VideoView>
<VideoView>
</RelativeLayout>
横向模式下其他视图将不可见。提前致谢。我是android开发的新手。
【问题讨论】:
【参考方案1】:由于您的布局包含视频视图,我认为您不想在此页面上播放视频。
为了防止活动重新播放和视频重新启动,您应该将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();
【讨论】:
谢谢。它工作完美。您节省了最多 2 天的时间。@Pogonets Antom【参考方案2】:您可以为两个不同的方向创建两个不同的布局xml文件,并将文件存储在layout
目录中的纵向模式和layout-land
目录中的横向模式res
目录下的 目录。 我认为这样做比在运行时管理可见性更好
【讨论】:
这会在旋转时中断视频播放 @PogonetsAnton 抱歉,我没有玩过VideoView
。如果它坏了,那么最好还是用你的答案。
对不起。我的视频视图与@Pogonets Antom 答案完美配合。
@AslamHossin 太好了,我很高兴听到这个消息。快乐的编码朋友。也给他一票
如何设置视频视图的LayoutParams。纵向模式:videoView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 200));对于横向模式: videoView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));工作中。请帮助或建议。以上是关于如何通过方向更改控制视图可见性(可见/不可见)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章