对话框主题的活动未显示为对话框

时间:2016-01-09 22:06:54

标签: android android-appcompat

我正在开发一个Android项目,我正在创建一个应该使用对话框主题的活动,但它没有正确显示。

下面是我的活动布局XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView android:id="@+id/dialog_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="@android:style/TextAppearance.DialogWindowTitle"/>
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView android:id="@+id/dialog_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </ScrollView>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        style="@android:style/DeviceDefault.ButtonBar.AlertDialog">
        <Button android:id="@+id/btnCopyToClipbard"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Copy to Clipboard"
            style="@android:style/Widget.DeviceDefault.Button.Borderless"/>
        <Button android:id="@+id/btnClose"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Close"
            style="@android:style/Widget.DeviceDefault.Button.Borderless"/>
    </LinearLayout>
</LinearLayout>

以下是我的活动定义方式

<activity
            android:name=".CustomAlertDialogActivity"
            android:theme="@style/Theme.AppCompat.Light.Dialog">
        </activity>

活动类如下

public class CustomAlertDialogActivity extends BaseActionBarActivity
{
    TextView txtDialogTitle;
    TextView txtDialogMessage;
    Bundle bundle;

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.custom_alert_dialog);

        txtDialogTitle = (TextView)findViewById(R.id.dialog_title);
        txtDialogMessage = (TextView)findViewById(R.id.dialog_message);

        bundle = getIntent().getExtras();
        if (bundle != null)
        {
            txtDialogTitle.setText("An error occurred");
            txtDialogMessage.setText("No error was specified");
            return;
        }
        txtDialogTitle.setText(bundle.getString(CustomAlertDialog.DIALOG_TITLE));
        txtDialogMessage.setText(bundle.getString(CustomAlertDialog.DIALOG_MESSAGE));
    }
}

BaseActionBarActivity是我自己的类,它扩展了AppCompatActivity

以下是我的警告对话框的显示方式

Activity screenshot

如果它有任何不同,这个活动是在我的应用程序中包含的库项目中。

1 个答案:

答案 0 :(得分:1)

这是Activity找我的方式:
enter image description here enter image description here
(分别为Android 6.0和Android 4.4)

为了测试,我只是将您的代码复制到一个空项目中,如您所见,它可以工作(即使它需要一些UI抛光)。

我最好的猜测是你无意中在超级setTheme()的某个地方做BaseActionBarActivity等等。因此,作为第1步,BaseActionBarActivity替换为AppCompatActivity ,看看是否有任何变化。