gpt4 book ai didi

java - Android:AlertDialog 按钮不接受样式

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:48 28 4
gpt4 key购买 nike

我已经为我的警报对话框设置了一个样式,并且该样式显示在 [大多数] 对话框上没有问题,唯一的问题是按钮。

手机是运行 SenseUI 的 HTC Evo,AlertDialog 按钮继续通过 SenseUI 主题进行换肤。我已尝试将我的应用程序样式 (rtg_style) 更改为 Theme.Dialog 而不是 Theme.Light.NoTitleBar 的子项,并且 Activity 按钮的样式继续正确,但 AlertDialogs 的样式也继续不正确。我试图避免必须编写完全自定义的 AlertDialog 替换,我还能做什么?

样式.xml:

<style name="rtg_style" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">@drawable/bluebg</item>
<item name="android:buttonStyle">@style/rtg_Button</item>
<item name="android:listViewStyle">@style/rtg_ListView</item>
<item name="android:expandableListViewStyle">@style/rtg_ExpandableListView</item>
</style>

<style name="rtg_AlertDialog" parent="@style/rtg_style"> <!-- parent="@android:style/Theme.Dialog"> -->
<item name="android:buttonStyle">@style/rtg_Button</item>
<item name="android:listViewStyle">@style/rtg_ListView</item>
<item name="android:alertDialogStyle">@style/dialog</item>
</style>

<style name="rtg_Button" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/button</item>
<item name="android:textColor">#ffffff</item>
<item name="android:textSize">15sp</item>
<item name="android:textStyle">bold</item>
<item name="android:height">40dp</item>
</style>

<style name="rtg_ListView" parent="@android:style/Widget.ListView">
<item name="android:listSelector">@drawable/listview</item>
</style>

<style name="rtg_ExpandableListView" parent="@android:style/Widget.ExpandableListView">
<item name="android:listSelector">@drawable/listview</item>
</style>

<style name="base">
<item name="android:padding">10dp</item>
</style>

<style name="title" parent="@style/base">
<item name="android:textColor">#FFFFFF</item>
<item name="android:textSize">16sp</item>
<item name="android:textStyle">bold</item>
</style>

<style name="body" parent="@style/base">
<item name="android:textColor">#000000</item>
<item name="android:textStyle">normal</item>
</style>

<style name="dialog">
<item name="android:fullDark">@drawable/dialog_body</item>
<item name="android:topDark">@drawable/dialog_title</item>
<item name="android:centerDark">@drawable/dialog_body</item>
<item name="android:bottomDark">@drawable/dialog_footer</item>
<item name="android:fullBright">@drawable/dialog_body</item>
<item name="android:centerBright">@drawable/dialog_body</item>
<item name="android:bottomBright">@drawable/dialog_footer</item>
<item name="android:bottomMedium">@drawable/dialog_footer</item>
<item name="android:centerMedium">@drawable/dialog_body</item>
<item name="android:windowIsFloating">true</item>

</style>

Activity .java:

AlertDialog.Builder ab = new AlertDialog.Builder(new ContextThemeWrapper(OrderSummary.this, R.style.rtg_AlertDialog));
ab.setTitle("Select a reason");
String[] reasons = new String[Shared.Reasons_RejectAll.size()];
for (int i = 0; i < Shared.Reasons_RejectAll.size(); i++) {
try {
reasons[i] = Shared.Reasons_RejectAll.get(i).Name;
} catch (Exception ex) {
ex.printStackTrace();
}
}
ab.setItems(reasons, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
rejectReason = Shared.Reasons_RejectAll.get(which).Name;
for (int i = 0; i <= r.ItemList.length; i++){
r.ItemList[index].item.get(i).setStatus(eItemStatus.REJECTED);
r.ItemList[index].item.get(i).setRejectReason(rejectReason);
}
adapter.notifyDataSetChanged();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// No additional code required at this time.
}
});
//ab.show();

AlertDialog dialog = ab.create();
dialog.show();

最佳答案

我刚刚尝试过的东西是有效的。您可以使用 getButton(int whichButton) 来提取 Button 的 View 类,然后您可以根据需要对其进行屠宰。

在执行此操作之前,调用 .show() 函数,否则 Button 本身将不会被创建,并且 getButton() 命令为您提供 null,并且 NullPointerExceptions 很糟糕。拿到按钮后,可以做Button/TextView(Button是TextView的扩展)功能,比如.setBackgroundDrawable和.setTextColor。

AlertDialog alert = new AlertDialog.Builder(activity).create();
// configure things here like the title and message
alert.show();

Button button = alert.getButton(AlertDialog.BUTTON_NEGATIVE);
button.setBackgroundResource(R.drawable.negative_button_selector);

如果有人能弄清楚如何在创建新按钮和滑动该按钮的东西之外设置样式/主题,我会洗耳恭听,因为那样会更好。

摇滚!继续前进!

关于java - Android:AlertDialog 按钮不接受样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367370/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com