You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何增大通过setSingleChoiceItems创建的Material AlertDialog单选项文字尺寸?

解决AlertDialog单选列表项文字尺寸增大问题

你之前的样式配置未生效,原因是materialAlertDialogBodyTextStyle仅作用于对话框的正文文本(比如setMessage()设置的内容),而setSingleChoiceItems()生成的单选列表项需要单独配置样式。

方法一:通过主题样式直接配置

在你的AppDialog主题中添加针对列表项文本的样式配置:

<!-- AlertDialog theme on both light and night mode -->
<style name="AppDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog" tools:keep="@style/AppDialog">
    <!-- 保留你已有的其他属性 -->
    <item name="buttonBarPositiveButtonStyle">@style/DialogButtonStyle</item>
    <item name="buttonBarNegativeButtonStyle">@style/DialogButtonStyle</item>
    <item name="materialAlertDialogBodyTextStyle">@style/AppDialog.Body</item>
    <item name="alertDialogStyle">@style/MaterialAlertDialog.App</item>
    
    <!-- 添加单选列表项文本样式 -->
    <item name="materialAlertDialogListTextStyle">@style/AppDialog.ListItemText</item>
</style>

<!-- 定义单选列表项的文本样式 -->
<style name="AppDialog.ListItemText" parent="TextAppearance.Material3.Subtitle1">
    <item name="android:textSize">18sp</item> <!-- 替换为你需要的字号 -->
    <!-- 可额外添加文本颜色等属性 -->
    <item name="android:textColor">@color/your_color</item>
</style>

方法二:自定义列表项布局(更灵活)

如果需要对列表项做更多自定义(比如调整内边距、单选框样式),可以创建自定义布局文件radio_list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/listPreferredItemHeightSmall"
    android:textSize="18sp" <!-- 设置目标字号 -->
    android:textColor="?attr/colorOnSurface"
    android:gravity="center_vertical"
    android:paddingHorizontal="16dp"
    android:paddingVertical="12dp"
    android:checkMark="?attr/listChoiceIndicatorSingle" />

然后在创建AlertDialog时,替换默认的列表项布局:

String[] items = {"选项1", "选项2", "选项3"};
AlertDialog dialog = new AlertDialog.Builder(this, R.style.AppDialog)
        .setSingleChoiceItems(items, 0, null)
        .setPositiveButton("确定", (dialogInterface, i) -> dialogInterface.dismiss())
        .setNegativeButton("取消", (dialogInterface, i) -> dialogInterface.dismiss())
        .create();

// 获取列表视图并替换适配器
ListView listView = dialog.getListView();
listView.setAdapter(new ArrayAdapter<>(this, R.layout.radio_list_item, items));

dialog.show();

两种方法都能生效,根据你的需求选择即可。

内容的提问来源于stack exchange,提问作者Bitwise DEVS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:50:30