Gre*_*hus 1 android android-appcompat android-theme android-styles
我希望能够设置一个主题来在AppCompat AlertDialog中设置消息文本大小.主题需要有parent="@style/Theme.AppCompat.Dialog".我花了几个小时搜索并尝试了所有的建议,但它们似乎都没有使用那个基本主题.
如果父级更改为Holo主题,那么我可以使用更改消息文本大小textAppearanceMedium,但对话框的其余部分看起来非常难看:S
目前我的主题是(所有这一切目前都已联系并正在运作):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyDialogTheme" parent="@style/Theme.AppCompat.Dialog">
<!-- Used for the buttons -->
<item name="colorAccent">@color/colorPrimary</item>
<!-- Button text size -->
<item name="android:textSize">@dimen/ui_text_size</item>
<!-- Content text color -->
<item name="android:textColorPrimary">@color/ui_text_color</item>
<!-- Title style -->
<item name="android:windowTitleStyle">@style/MyDialogTitleStyle</item>
<!-- Button style (except size) -->
<item name="android:textAppearanceButton">@style/MyDialogButtonTextAppearance</item>
<!-- Dialog background -->
<item name="android:windowBackground">@color/ui_background</item>
</style>
<style name="MyDialogTitleStyle" parent="@style/RtlOverlay.DialogWindowTitle.AppCompat">
<item name="android:textAppearance">@style/MyDialogTitleTextAppearance</item>
<item name="android:textSize">@dimen/ui_large_text_size</item>
</style>
<style name="MyDialogTitleTextAppearance">
<item name="android:textSize">@dimen/ui_large_text_size</item>
<item name="android:textAllCaps">true</item>
<item name="android:textColor">@color/ui_title_color</item>
</style>
<style name="MyDialogButtonTextAppearance">
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textAllCaps">true</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
似乎没有办法通过主题属性.我们来看看appcompat-v7库的源代码.以下TextView内容反映了以下信息AlertDialog:
<android.support.v7.widget.AlertDialogLayout ... >
<!-- ... -->
<TextView
android:id="@android:id/message"
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="?attr/dialogPreferredPadding"
android:paddingRight="?attr/dialogPreferredPadding"/>
<!-- ... -->
</android.support.v7.widget.AlertDialogLayout>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,TextView使用了TextAppearance.AppCompat.Subhead作为样式.根据其定义:
<style name="TextAppearance.AppCompat.Subhead" parent="Base.TextAppearance.AppCompat.Subhead"/>
<style name="Base.TextAppearance.AppCompat.Subhead">
<item name="android:textSize">@dimen/abc_text_size_subhead_material</item>
<item name="android:textColor">?android:textColorPrimary</item>
</style>
Run Code Online (Sandbox Code Playgroud)
它textSize是静态的,不能通过像textColor(使用它textColorPrimary)这样的属性来解析.因此,我们没有选择设置textSize.唯一的方法是通过将TextAppearance.AppCompat.Subhead样式添加到您自己的styles.xml文件来覆盖样式,并将其设置为textSize您需要的任何值.但请注意,可能存在副作用,因为此样式也可用于其他地方.
选项:
TextAppearance.AppCompat.Subhead在styles.xml文件中定义 并覆盖该textSize属性.TextView通过id和#setTextSize查找)| 归档时间: |
|
| 查看次数: |
746 次 |
| 最近记录: |