AppCompatRadioButton 未显示
AppCompatRadioButton not shown
因为我想在版本 < 21 上使用 buttonTint
,所以我需要从 RadioButton
切换到 AppCompatRadioButton
。不幸的是,该按钮未显示在设备上 (Android 5.1)。这很奇怪,因为 AppCompatRadioButton
的 android:text
起作用了,所以这意味着按钮基本上起作用了。只有圆没有显示。任何想法为什么?我还尝试设置 AppCompatRadioButton
附带的其他颜色属性。它也没有用。我也更新到最新的兼容包,我把xml里面的按钮移到另一个位置,但是没有任何作用。
这是 xml 定义:
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/radio_bronze_monthly"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="onBillingRadioButtonClicked"
android:text="@string/bronze_monthly"
android:textColor="@color/black"
android:textSize="@dimen/default_text_size"
app:buttonTint="@color/black"
app:colorAccent="@color/black"
app:colorPrimary="@color/black"
app:colorPrimaryDark="@color/black"/>
在 build.gradle(App) 模块中构建设计库
我有 Android 5.1 并很快试用了它,它对我来说工作正常。我只是把它放在默认约束布局中,但这应该没有什么区别。
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/radio_bronze_monthly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@android:color/black"
android:text="asdf"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
我弄清楚出了什么问题:
在 AndroidManifest
中的 Activity 声明中,我设置了我自己的透明主题,它也在其他 Activity 中使用:
<activity
android:name=".domain.billing.BillingActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Transparent">
</activity>
这来自 styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
<!--more styles -->
</resources>
如果我省略这一行,它会起作用:
android:theme="@style/Theme.Transparent"
因为我想在版本 < 21 上使用 buttonTint
,所以我需要从 RadioButton
切换到 AppCompatRadioButton
。不幸的是,该按钮未显示在设备上 (Android 5.1)。这很奇怪,因为 AppCompatRadioButton
的 android:text
起作用了,所以这意味着按钮基本上起作用了。只有圆没有显示。任何想法为什么?我还尝试设置 AppCompatRadioButton
附带的其他颜色属性。它也没有用。我也更新到最新的兼容包,我把xml里面的按钮移到另一个位置,但是没有任何作用。
这是 xml 定义:
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/radio_bronze_monthly"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="onBillingRadioButtonClicked"
android:text="@string/bronze_monthly"
android:textColor="@color/black"
android:textSize="@dimen/default_text_size"
app:buttonTint="@color/black"
app:colorAccent="@color/black"
app:colorPrimary="@color/black"
app:colorPrimaryDark="@color/black"/>
在 build.gradle(App) 模块中构建设计库
我有 Android 5.1 并很快试用了它,它对我来说工作正常。我只是把它放在默认约束布局中,但这应该没有什么区别。
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/radio_bronze_monthly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@android:color/black"
android:text="asdf"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
我弄清楚出了什么问题:
在 AndroidManifest
中的 Activity 声明中,我设置了我自己的透明主题,它也在其他 Activity 中使用:
<activity
android:name=".domain.billing.BillingActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Transparent">
</activity>
这来自 styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
<!--more styles -->
</resources>
如果我省略这一行,它会起作用:
android:theme="@style/Theme.Transparent"