java - 更改字体后复选框不显示
问题描述
您好,我在警报对话框中显示复选框时遇到问题。它仅涉及更改字体时的情况。在 Arial 上,所有内容(标题、消息和复选框)都正确显示,但在 Ginger ( AppThemeWithCustomFont
) 上,此复选框根本不显示(标题和消息工作正常)。这些是我的代码。
复选框.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:padding="10dp">
<CheckBox
android:id="@+id/skip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_gravity="center_horizontal"
android:buttonTint="#fff"
app:buttonTint="#fff"
android:text="@string/checkbox_show"
android:textColor="#fff"/>
StageZero.java
void configureInitDialog() {
AlertDialog adb = new AlertDialog.Builder(this, R.style.MojStyl).create();
View checkboxLayout = View.inflate(this, R.layout.checkbox, null);
skip = checkboxLayout.findViewById(R.id.skip);
adb.setView(checkboxLayout);
adb.setIcon(android.R.drawable.ic_dialog_info);
adb.setTitle("Info");
adb.setMessage(getResources().getString(R.string.stage_zero_dialog));
adb.setCancelable(false);
adb.setButton(DialogInterface.BUTTON_NEUTRAL, "Ok", (dialogInterface, i) -> {
String checkBoxResult = "";
if (skip.isChecked())
checkBoxResult = "linia2";
if (checkBoxResult.equals("linia2"))
editor.putBoolean("hideDialog", true).apply();
});
if (!hideDialog)
adb.show();
}
样式.xml
<style name="AppThemeWithClassicFont" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowBackground">@color/activity_background</item>
<item name="android:icon">@android:color/transparent</item>
<item name="colorPrimary">@android:color/transparent</item>
<item name="android:fontFamily">@font/arial</item>
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ThemeActionBar</item>
<item name="windowActionBarOverlay">true</item>
</style>
<!-- Application theme. -->
<style name="AppThemeWithCustomFont" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowBackground">@color/activity_background</item>
<item name="android:icon">@android:color/transparent</item>
<item name="colorPrimary">@android:color/transparent</item>
<item name="android:fontFamily">@font/ginger</item>
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ThemeActionBar</item>
<item name="windowActionBarOverlay">true</item>
</style>
对于任何支持,我都会给出最佳答案。先感谢您!
解决方案
我找到了一种更好的方法来自定义复选框上的字体,请按照以下步骤更改字体:
1-转到文件/新建/文件夹/资产文件夹并在默认位置创建新的资产文件夹。
2-将字体复制到新的 Assets 文件夹中。
3-在 onCreate 方法中使用此代码将新字体设置为复选框:
checkBox = findViewById(R.id.skip);
Typeface font = Typeface.createFromAsset(getAssets(), "YourFont.ttf");
checkBox.setTypeface(font);
这是我用于复选框的 xml 代码,采用相对布局:
<CheckBox
android:id="@+id/skip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:buttonTint="#fff"
app:buttonTint="#1d1d1b"
android:text="hello world"
android:textColor="#1d1d1b"/>
但是您可以更改和自定义它。
推荐阅读
- ios - 如何使用 DispatchGroup 从函数返回异步值
- excel - VBA 从一个单元格中选择值并放入另一个单元格
- rust - 一些错误 E0425 & E0599 write_fmt
- apache-nifi - 安全的 NiFi 不会与 NiFi Registry 通信
- kubernetes - Kubernetes 中的 NetworkPolicy 在 podSelector 上不匹配
- ruby-on-rails - 如何在 order rails 查询中修复 sql 注入
- c# - 合并包含在分离实体中的 ICollection
- java - java - 如何使用正则表达式防止Java电子邮件字段中的重音字符?
- pip - 如何下载pyaudio
- node.js - npm 安装:500 错误