我有一个片段,在其中一个 TextView 的宽度是从以下文件夹中取得的:
values
和 values-port
。
这些值在屏幕方向改变时发生变化,但是碎片的用户界面没有任何影响。
实际上,它实际上是从 values-port
中选择值,并且:
如果设备处于横屏模式:将调用带新方向(横屏)的 onConfigurationChanged() 方法。
如果设备处于竖屏模式:不会调用 onConfigurationChanged() 方法。
每当我更改方向时,就一定会调用 onConfigurationChanged()
方法。
那么,
为什么它总是以纵向模式开始?
如何才能使 UI 元素的尺寸变化生效。
我在片段中尝试了类似以下的内容:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getView().requestLayout();
}
但是不起作用。
我的TextView始终使用来自values-port
文件夹的宽度。
编辑:可能看起来有些多余,但这是代码:
<activity
android:name=".FeedActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
我知道我可以从清单中删除 android:screenOrientation="portrait"
而不是在 Activity 中使用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
,但我想了解这段代码的行为。