我在清单中为我的活动提供了android:configChanges =“ orientation | keyboard”,当我旋转设备时,始终会调用onConfigurationChanged.没问题.
我想要的是当设备旋转时,小部件的字体大小改变了.
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/my_font_size" />
像上面一样,textSize属性引用资源中的值
定义my_font_size的xml文件位于values-land,values-port文件夹中.
好.我准备好了.编译,运行并旋转设备,没有任何变化.
onConfigurationChanged()中的requestLayout()不起作用.
有什么建议吗?
谢谢.
解决方法:
除非绝对必要,否则不应使用configChanges属性(引入此属性是为了启用某些对性能敏感的方案).请仔细阅读Handling Runtime [Congiuration] Changes.
This technique [using
configChanges
] should be considered a last resort and is not recommended for most applications.
在警告您之后,这里说明了为什么旋转设备时看不到更改.
>如果您不对活动使用configChanges =“ orientation”,则您的活动将被销毁并使用用于新方向的资源重新创建.在这种情况下,您在onCreate()中的代码将自动从正确的资源(* -land或* -port)中选择值.
>如果您确实使用configChanges =“ orientation”,则基本上是对Android说不自动应用更改,而您将自己在onConfigurationChanged()中进行更改.
假设您确实需要保留configChanges,这是可以解决字体大小问题的方法:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
int fontSize = getResources().get(R.id.font_size);
mTextView.setTextSize(fontSize);
}
但同样,在大多数情况下,您实际上不应使用configChanges.