我为大屏幕上的所有文字按钮制作了自定义样式
<style name="button_large" parent="@android:style/Widget.TextView">
<item name="android:textColor">@color/button_color</item>
<item name="android:textSize">30dp</item>
<item name="android:clickable">true</item>
<item name="android:soundEffectsEnabled">false</item>
</style>
现在我想要正常屏幕的小按钮,我添加noew样式,只有android:textSize更改。
<style name="button_normal" parent="@android:style/Widget.TextView">
<item name="android:textColor">@color/button_color</item>
<item name="android:textSize">10dp</item>
<item name="android:clickable">true</item>
<item name="android:soundEffectsEnabled">false</item>
</style>
是否可以提取此值并根据屏幕大小接收所需的值?并且只使用一种风格。
<item name="android:textSize">value_based_on_screen_size</item>
如果是大屏幕,它将为30,对于普通屏幕,它将为10
答案 0 :(得分:10)
是的,这是可能的。以下是您可以安排的方式。在您的默认values/styles.xml
中,
<style name="button" parent="@android:style/Widget.TextView">
<item name="android:textColor">@color/button_color</item>
<item name="android:textSize">@dimen/button_text_size</item>
<item name="android:clickable">true</item>
<item name="android:soundEffectsEnabled">false</item>
</style>
然后像这样创建一个values/dimens.xml
,
<resources>
<dimen name="button_text_size">10sp</dimen>
</resources>
并创建一个像这样的values-large
,
<resources>
<dimen name="button_text_size">30sp</dimen>
</resources>
P.s。,使用sp
表示字体。它就像dp
一样,除非用户通过系统设置增加默认字体大小,否则字体会相应改变。
答案 1 :(得分:1)
首先准备此类文件:
res/values-ldpi/dimens.xml
res/values-mdpi/dimens.xml
res/values-hdpi/dimens.xml
然后声明不同文件的资源值:
<!-- in values-ldpi/dimens.xml -->
<dimen name="mytextSize">30dp</dimen>
和
<!-- in values-mdpi/dimens.xml -->
<dimen name="mytextSize">20dp</dimen>
然后,以你的风格使用这种方式:
<item name="android:textSize">@dimen/mytextSize</item>