如何无需自定义TextView即可实现MaterialAlertDialog文本两端对齐?
MaterialAlertDialog消息两端对齐实现方案(无需自定义插入TextView)
首先明确:存在无需手动创建自定义TextView插入对话框的实现方案,可按兼容范围选择对应方法:
- 方案1:API 26+ 原生支持方案
无需修改任何布局,直接调用系统原生属性即可实现,实现代码如下:
Kotlin示例:
// 构建并显示对话框 val dialog = MaterialAlertDialogBuilder(context) .setTitle("提示") .setMessage("需要显示的长文本内容,设置后将自动应用两端对齐效果") .setPositiveButton("确认", null) .show() // 获取对话框内置的消息TextView val msgTv = dialog.findViewById<TextView>(android.R.id.message) // 设置两端对齐,仅API 26及以上生效 msgTv?.justificationMode = Layout.JUSTIFICATION_MODE_INTER_WORD
Java示例:
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context); builder.setTitle("提示"); builder.setMessage("需要显示的长文本内容,设置后将自动应用两端对齐效果"); builder.setPositiveButton("确认", null); AlertDialog dialog = builder.show(); TextView msgTv = dialog.findViewById(android.R.id.message); if (msgTv != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { msgTv.setJustificationMode(Layout.JUSTIFICATION_MODE_INTER_WORD); }
- 兼容说明
Android系统直到API 26才在TextView层面新增了原生两端对齐的支持,这也是低版本很难实现该效果的核心原因。如果需要兼容API 26以下版本且不想引入自定义TextView,目前没有完美的系统原生方案,可选择接受低版本下对齐效果降级为左对齐,或引入第三方两端对齐TextView后按上述逻辑注入对话框即可。
内容的提问来源于stack exchange,提问作者Rafael Lima
相关产品推荐
相关产品推荐

