相关疑难解决方法(0)

如何以编程方式更改 android:configChanges?

如何以configChanges="orientation|keyboard|screenSize"编程方式更改 Android 配置?

我的意思是我们可以在运行时更改此选项吗?

android

7
推荐指数
1
解决办法
5236
查看次数

动态更改 android:configChanges

我正在创建一个杂志应用程序,它使用 aViewPager并滚动不同的WebViews。大多数页面是纵向的,但有些页面可以看到横向的。

为了解决这个问题,我在持有时使用了两种Activity方法ViewPager

public void allowOrientationChanges() {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}

public void enforcePortrait() {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Run Code Online (Sandbox Code Playgroud)

这样,我们确保所有只需要纵向的页面保持纵向(调用getActivity().enforcePortrait()),而具有纵向/横向视图的页面经历整个重新启动过程(调用getActivity().allowOrientationChanges())。

我们想在杂志的某些页面上添加视频。不幸的是,HTML5 视频标签无法正常工作,因此我们VideoView在布局中添加了 。现在要添加的功能是:

  • 纵向:在某个位置显示视频。(完毕!
  • 横向:使视频全屏显示(如 YouTube 应用程序)。

VideoView我一直在尝试这样做,我发现的唯一方法是更改​​方法中onConfigurationChanged()的大小Activity并通知fragment配置已更改。这样做的问题是添加android:configChanges="orientation|keyboardHidden"Activity“禁止”重新创建视图的意愿。

我想到的两种可能的解决方案:

  1. 从代码中更改android:configChanges并根据页面,但我找不到该调用是否存在。
  2. 强制重新创建该onConfigurationChanged()方法。我不知道如何强制重新创建fragment.

有任何想法吗?

android android-fragments android-viewpager

6
推荐指数
1
解决办法
4615
查看次数