不同文本大小的主题不起作用

15 浏览
0 Comments

不同文本大小的主题不起作用

我想在我的应用程序中有两个主题:一个是正常字体大小的,另一个是较小字体大小的。我需要在活动的 onCreate 或 onStart 中动态更改主题。\n我已经定义了两个主题(文件 themes.xml):\n

\n\n

\n\n

\n在 styles.xml 文件中,我为每个主题定义了样式集:\n\n

\n

\n

\n

\n

\n\n

\n

\n

\n

\n

\n为了测试主题更改,我创建了一个活动,并添加了两个 TextView(一个使用 textAppearanceLarge,一个使用 textAppearanceSmall)。我还添加了一个 EditText 和一个列表视图。我没有改变这些视图上的任何样式属性,保持它们在布局编辑器中放置时的样子。我的目标是在不必为每个小部件定义样式或外观的情况下更改整个应用程序的主题。\n我还添加了一些按钮来触发主题更改:新的主题资源 id 存储在首选项中,然后活动自行完成,并启动到同一测试活动的新 Intent。活动在 onCreate 或 onStart 中读取当前主题设置,然后调用 setTheme。这个主题设置更改是有效的,但只有 ListView 调整了文本大小:TextView 和 EditText 没有调整大小。\n所以我的问题是我到底做错了什么。我按照 3-4 个教程的步骤进行操作,我的样式与它们应该的工作方式保持一致。\n请注意,我只在主题中重写了文本外观,因为我认为几乎每个基于文本的小部件都会根据外观自动调整大小(从布局编辑器中拖放时,每个小部件都有一个外观)。我在某个地方读到过这样的说法(如果是这样,谷歌的团队干得好),你需要为每种小部件定义文本大小。好吧,在上面的示例中,我重写了 editTextStyle,但没有起作用。我还尝试了按钮和文本视图,结果是相同的。但令我困惑的是,ListView(屏幕上最复杂的小部件)可以正确调整大小,而最简单的小部件却不能,即使为这些特定类型的小部件定义了样式!

0
0 Comments

主题设置没问题。

问题出在活动上。你需要在setContentView之前调用setTheme

感谢提供的答案

解决方法:在活动中调用setTheme方法之前先调用setContentView方法。

0