当进入横向模式时,操作栏导航选项卡在操作栏中合并,因此我定义了一个values-land
文件夹,其中包含colors.xml
文件,其中我为合并设置了适当的背景颜色和文本颜色标签。长话短说:
当我将屏幕旋转到横向模式时会发生这种情况
当我从横向模式开始启动应用程序,然后更改为肖像时,这就是我得到的:
活动以正确的景观颜色开始,我在values-land/colors.xml
中定义
这些是将屏幕旋转到纵向模式时发生的情况
只有标签的文字颜色会根据我的说明发生变化。
该活动有launchMode="singleTask"
(我的情况是强制性的),但即使launchMode="standard"
,问题仍然存在。我开始认为这是一个API错误......是否有任何解决方法,例如强制重新绘制操作栏的方法?
编辑:我的<activity>
代码:
<activity
android:name="com.rocca.controlloSpese.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 0 :(得分:1)
您似乎已经设置了Android清单,以便在轮换期间不会破坏活动。除非您有强有力的理由这样做,否则您应该在旋转时销毁并重新创建活动。
答案 1 :(得分:0)
values-land/
目录,其中有一个具有特定颜色的colors.xml
文件。
标签的背景由drawables定义,我将它们放在drawable
目录中,因为它们对于横向和纵向都是相同的形状,只有颜色会改变。所以没有drawable-land
目录,但这意味着系统不会重绘背景并将回收它们,遗漏了这些可绘制内部存在必须更改的值的引用这一事实。解决方案是添加一个drawable-land
目录,其中包含背景drawable的副本,以便系统知道它必须重绘视图。它会重绘相同的视图,但至少会使用不同的颜色。