我希望能够在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>
答案 0 :(得分:5)
似乎没有办法通过主题属性。我们来看看appcompat-v7 library的源代码。在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>
正如您所看到的,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>
textSize
是静态的,不会通过textColor
(使用textColorPrimary
)等属性解析。因此,我们没有选择设置textSize。唯一的方法是通过将TextAppearance.AppCompat.Subhead
样式添加到您自己的styles.xml
文件中来覆盖textSize
样式,并将TextAppearance.AppCompat.Subhead
设置为您需要的任何值。但请注意,可能存在副作用,因为此样式也可用于其他地方。
选项:
textSize
并覆盖TextView
属性。<a href="https://somelink.com" target="_blank">
SOMENAME <i class="fa fa-chevron-right"></i>
</a>
)