Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有主题的Android AppCompat AlertDialog样式_Android_Android Appcompat_Android Theme_Android Styles - Fatal编程技术网

带有主题的Android AppCompat AlertDialog样式

带有主题的Android AppCompat AlertDialog样式,android,android-appcompat,android-theme,android-styles,Android,Android Appcompat,Android Theme,Android Styles,我希望能够在AppCompat AlertDialog中设置主题以设置消息的文本大小。主题需要有parent=“@style/theme.AppCompat.Dialog”。我花了几个小时搜索和尝试所有的建议,但似乎没有一个与这个基本主题相关 如果将父对象更改为Holo主题,则我可以使用textAppearanceMedium更改消息文本大小,但对话框的其余部分看起来非常难看:S 目前我的主题是(所有这些都已连接并工作): @颜色/原色 @尺寸/用户界面\文本\大小 @颜色/用户界面\文本\颜

我希望能够在AppCompat AlertDialog中设置主题以设置消息的文本大小。主题需要有
parent=“@style/theme.AppCompat.Dialog”
。我花了几个小时搜索和尝试所有的建议,但似乎没有一个与这个基本主题相关

如果将父对象更改为Holo主题,则我可以使用
textAppearanceMedium
更改消息文本大小,但对话框的其余部分看起来非常难看:S

目前我的主题是(所有这些都已连接并工作):


@颜色/原色
@尺寸/用户界面\文本\大小
@颜色/用户界面\文本\颜色
@样式/MyDialogTitleStyle
@样式/MyDialogButtonExtAppearance
@颜色/用户界面背景
@样式/MyDialogTitleTextAppearance
@尺寸/用户界面\大\文本\大小
@尺寸/用户界面\大\文本\大小
符合事实的
@颜色/用户界面\标题\颜色
无衬线灯
符合事实的

似乎无法通过主题属性实现这一点。让我们看看的源代码。在反映
警报对话框消息的
文本视图
之后:

<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>
textSize
是静态的,不能通过像
textColor
这样的属性解析(它使用
textColorPrimary
)。因此,我们没有设置textSize的选项。唯一的方法是将
textpearance.AppCompat.Subhead
样式添加到您自己的
styles.xml
文件中,并将
textSize
设置为您需要的任何值,从而覆盖该样式。但是请注意,由于这种风格也可以在其他地方使用,因此可能会有副作用

tl;博士 选项:

  • 在styles.xml文件中定义
    TextAppearance.AppCompat.Subhead
    ,并覆盖
    textSize
    属性
  • 以编程方式进行(按id和#setTextSize查找
    TextView
  • 在对话框中使用您自己的布局-appcompat-v7的源代码可能是一个很好的起点

  • 似乎没有办法通过主题属性实现这一点。让我们看看的源代码。在反映
    警报对话框消息的
    文本视图
    之后:

    <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>
    
    textSize
    是静态的,不能通过像
    textColor
    这样的属性解析(它使用
    textColorPrimary
    )。因此,我们没有设置textSize的选项。唯一的方法是将
    textpearance.AppCompat.Subhead
    样式添加到您自己的
    styles.xml
    文件中,并将
    textSize
    设置为您需要的任何值,从而覆盖该样式。但是请注意,由于这种风格也可以在其他地方使用,因此可能会有副作用

    tl;博士 选项:

  • 在styles.xml文件中定义
    TextAppearance.AppCompat.Subhead
    ,并覆盖
    textSize
    属性
  • 以编程方式进行(按id和#setTextSize查找
    TextView
  • 在对话框中使用您自己的布局-appcompat-v7的源代码可能是一个很好的起点

  • 您还可以创建一个自定义对话框。您可以发布包含材质主题和全息主题的屏幕截图吗?您还可以创建一个自定义对话框。您可以发布包含材质主题和全息主题的屏幕截图吗?谢谢@reVerse,定义了我自己的
    TextAppearance.AppCompat.Subhead
    真是太棒了!谢谢@reVerse,定义了我自己的
    textpearance.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>