当前位置: 首页 > 知识库问答 >
问题:

使用材料和api>21时警报对话框失败

谭繁
2023-03-14
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">

    <!-- android: annotation is not needed in <=v21 -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="colorButtonNormal">@color/buttonNormal</item>

</style>

values-v21文件夹中的样式是...

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="android:Theme.Material.NoActionBar">
        <!-- android: annotation is required in >=v21 -->
        <item name="android:colorPrimary">@color/colorPrimary</item>
        <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="android:colorAccent">@color/colorAccent</item>
        <item name="android:colorButtonNormal">@color/buttonNormal</item>

    </style>
</resources>

我的清单

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.rythmair.umwhat"
          xmlns:android="http://schemas.android.com/apk/res/android">

    <supports-screens
        android:anyDensity="true"
        android:requiresSmallestWidthDp="320"
        android:smallScreens="false"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity
            android:name=".FinalScore"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:screenOrientation="landscape">
        </activity>
        <activity
            android:name=".GameBoard"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:screenOrientation="landscape">
        </activity>
        <activity
            android:name=".GamePlayOptions"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:screenOrientation="landscape">
        </activity>
        <activity
            android:name=".GameSetup"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:screenOrientation="landscape">
        </activity>
        <activity
            android:name=".HelpScreen"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:screenOrientation="landscape">
        </activity>
    </application>
</manifest>

当我试图使用AlergDialog时,我得到了一个错误,我从阅读中意识到需要AppCompat或Descenant

public void playAgainButton(View view){

        new AlertDialog.Builder(this)
                .setIcon(android.R.drawable.ic_dialog_info)
                .setTitle("Closing Activity")
                .setMessage("This will clear the board and return you to the Game Options screen.  Are you sure?")
                .setPositiveButton("Yes", new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        playAgain();
                        //finish();
                    }

                })
                .setNegativeButton("No", null)
                .show();
    }

共有1个答案

储嘉悦
2023-03-14

发生这种情况是因为您使用的是style-21 XML格式的theme.Material...应该这样使用:

style.xml

<resources>
    <style name="AppTheme" parent="AppTheme.Base">

    </style>

    <!-- Base application theme. -->
    <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="colorControlHighlight">@color/colorHighlight</item>
        <item name="android:windowBackground">@android:color/white</item>
    </style>
</resources>

并将此代码放入style-21.xml文件中

<resources>
    <style name="AppTheme" parent="AppTheme.Base">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>
 类似资料:
  • 我试图改变"取消"按钮上的Android L警报对话框的颜色设置alertDialogTheme属性的我的主题如下: 现在AlertDialogStyle为空: 我知道我可以用 属性更新这些按钮的颜色/样式。我的问题是,从主题下降。材料。光。对话框风格,我所有的对话框都将其宽度减小到(看起来)wrap_content。我有几个自定义警报对话框,宽度看起来很糟糕。有没有人遇到这个问题,如果有,有人解

  • 标记的答案使我走上了正确的轨道。

  • 我正在使用新的JavaFX Alert类(Java1.8_40),并尝试在exibition文本中使用HTML标记,但到目前为止还没有成功。下面是我正在尝试做的一个例子。 有没有人知道这是不是真的可能,给我举个例子? 提前道谢。

  • 我在antoher的项目中有完全相同的代码,但它在这里继续崩溃。我有。我真的不确定问题出在哪里。我尝试过切换gradle版本,从切换到。不管怎样,一切都失败了

  • 最近我从支持库切换到com.google.android.Material:Material:1.0.0 但是现在我遇到了一个问题,在这个页面中有一个注释https://github.com/Material-Components/Material-Components-android/blob/master/docs/geting-started.md 注意:使用Material Compone

  • 问题内容: 我有一个线程,每隔六秒钟将GPS坐标发送到数据库,并且有一个检查可以验证用户是否在定义的区域内。如果用户不在该位置内,则我需要一个警报对话框,通知他们它们不在范围内;如果用户在该区域内,我想要一个对话框,告诉他们它们在范围内。我的检查工作正常,但是我已经尝试过了,而且我很确定我不能在后台线程上添加对话框。我已经读过一些有关使用处理程序的信息,但是我不确定如何实现。如果您有任何建议,我将