我是一位相对较新的Android开发人员,遇到了一个我不知道如何纠正的问题,希望你们能够提出建议!
在Kitkat及以下版本中,当我创建一个具有2个按钮的AlertDialog时,如果它们超出按钮的长度,则两个按钮的文本将会换行。但是,在L中,文本拒绝适合。
Android 4.4:
Android L:
我找到了其他一些人遇到这个问题并寻找解决方案的例子,所以我开始探讨为他们提供的解决方案
Alert dialog buttons problems in Android L
https://github.com/hotchemi/Android-Rate/issues/40
根据答案,结论似乎是alertdialog的自定义样式。
我创建了一个values-v21文件夹,其中有一个styles.xml。从上面看,它看起来如下:
<resources>
<style name="AppBaseTheme" parent="android:Theme.Material.Light">
<item name="android:alertDialogTheme">@style/CustomAlertDialogStyle</item>
</style>
<style name="CustomAlertDialogStyle" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:buttonBarButtonStyle">@style/CustomButtonBarButtonStyle</item>
<item name="android:buttonBarStyle">@style/CustomButtonBarStyle</item>
</style>
<style name="CustomButtonBarStyle" parent="@android:style/Widget.Material.Light.ButtonBar.AlertDialog">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:height">@null</item>
<item name="android:minHeight">@null</item>
</style>
<style name="CustomButtonBarButtonStyle" parent="@android:style/Widget.Material.Light.Button.Borderless.Colored">
<item name="android:layout_width">0dp</item>
<item name="android:layout_weight">1</item>
</style>
</resources>
不幸的是,我在棒棒糖Alertdialog中看不到任何明显的变化,我仍然不太熟悉布局值,看看可能出现的问题。
所以经过一段时间的探索后,我想我会问:有没有人知道如何制作类似于Android 4.4的Android L按钮文字自动换行?
谢谢!
答案 0 :(得分:6)
如上所述,新的设计指南明确指出对话应该有清晰简洁的文本,让用户快速做出决定。因此不鼓励长期采取长期行动。
然而,从Lollipop开始,一种新的设计模式已被允许容纳更大的文本。看一看here并向下滚动到堆叠的全角按钮。基本上,您可以将按钮放在堆栈中,并使用完整的对话框宽度。它并没有解决你的问题,因为你仍然只限于全宽,但可以提供帮助。
至于如何做到这一点,我认为AlertDialog
类并没有提供这方面的简单方法。一些建议:
positive
和negative
按钮,只需为没有按钮的对话框设置自定义视图。在该视图中,您可以拥有标题,消息和您希望的所有按钮。forceStacking()
的便捷方法,您可以阅读。它很容易实现。答案 1 :(得分:2)
我也遇到过类似的问题。我当时正在使用android.app.AlertDiaglog。刚改变了 导入到android.support.v7.app.AlertDialog。
支持导入做了神奇的事。