我正在尝试通过样式扩大所有应用程序对话框按钮上的文本大小。以下代码将更改按钮背景颜色甚至文本大小写,但由于某种原因,textSize项目不受尊重:
<style name="MyAppTheme" parent="@android:style/Theme.Holo">
<item name="android:dialogTheme">@style/MyApp.Dialog</item>
<item name="android:alertDialogTheme">@style/MyApp.Dialog.Alert</item>
</style>
<style name="MyApp.Dialog" parent="@android:style/Theme.Holo.Dialog">
<item name="android:borderlessButtonStyle">@style/MyApp.BorderlessButton</item>
</style>
<style name="MyApp.Dialog.Alert" parent="@style/MyApp.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
<style name="MyApp.BorderlessButton" parent="@android:style/Widget.Holo.Button.Borderless">
<item name="android:textSize">50sp</item>
<item name="android:textAllCaps">true</item>
<item name="android:background">#800</item>
</style>
为什么没有读取textSize?我需要做些什么来扩大它?
答案 0 :(得分:5)
您没有在此处指定正确的属性:
<style name="MyApp.Dialog" parent="@android:style/Theme.Holo.Dialog">
====> <item name="android:borderlessButtonStyle">@style/MyApp.BorderlessButton</item>
</style>
您需要使用的属性是:
android:buttonStyle
我建议进行以下更改:
<style name="MyApp.Dialog" parent="@android:style/Theme.Holo.Dialog">
<item name="android:buttonStyle">@style/MyApp.BorderlessButton</item>
</style>
为什么:
borderlessButtonStyle
是一种方便定义的风格。但它目前没有连接到任何默认属性 - 在本例中为buttonStyle
。你仍然需要分配它。
我无法弄清楚为什么background
和textAllCaps
属性生效。发布对话框/警告对话框的xml可能会有所帮助。另外,你如何定义字符串 - “我同意”或“我同意”?
答案 1 :(得分:1)
AlertDialog
中的按钮使用Holo中的android:buttonBarButtonStyle
。覆盖主题/样式中的该属性,并设置android:minHeight="0dp"
以包装内容,或者当然您可以提供自己的高度。
更正:我误读了标题。您当然可以在同一样式上设置android:textSize="32sp"
来更改文本大小。
以下是框架中的布局:
<LinearLayout android:id="@+id/buttonPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/alert_dialog_button_bar_height"
android:orientation="vertical"
android:divider="?android:attr/dividerHorizontal"
android:showDividers="beginning"
android:dividerPadding="0dip">
<LinearLayout
style="?android:attr/buttonBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layoutDirection="locale"
android:measureWithLargestChild="true">
<Button android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_gravity="start"
android:layout_weight="1"
android:maxLines="2"
style="?android:attr/buttonBarButtonStyle"
android:textSize="14sp"
android:minHeight="@dimen/alert_dialog_button_bar_height"
android:layout_height="wrap_content" />
<Button android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:maxLines="2"
style="?android:attr/buttonBarButtonStyle"
android:textSize="14sp"
android:minHeight="@dimen/alert_dialog_button_bar_height"
android:layout_height="wrap_content" />
<Button android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_gravity="end"
android:layout_weight="1"
android:maxLines="2"
android:minHeight="@dimen/alert_dialog_button_bar_height"
style="?android:attr/buttonBarButtonStyle"
android:textSize="14sp"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
答案 2 :(得分:0)
我知道这不是你问题的答案,但为什么你不想让Activity
看起来像Dialog
?我遇到了和你一样的问题,并且设计Android Dialog
真的很痛苦。使用Activity
,您可以将任何您想要的内容作为xml内容并根据需要进行样式设置。您还有ActionBar
,因此您可以向Dialog
添加菜单,并在ActionBar
中使用自定义视图。也许现在是时候将您的Android对话框改为Activity
样式为Dialog
。
答案 3 :(得分:-2)
试试这种风格:
<style name="MyApp.BorderlessButton" parent="@android:style/Widget.Holo.Button.Borderless">
<item name="android:textSize">50sp</item>
<item name="android:textAllCaps">true</item>
<item name="android:background">#800</item>
</style>