Use custom layout for ACRA report dialog, not default one.

Styling the default dialog was difficult and it doesn't obey some
of the guidelines provided by the Android design docs:

 https://www.google.com/design/spec/components/dialogs.html#dialogs-specs
 (see "Content Guidelines")

This change introduces a custom dialog extending the base ACRA reporting
activity. Specifically, it introduces a padding of 24dp around the dialog
contents.
This commit is contained in:
Peter Serwylo 2016-01-02 13:23:24 +11:00
parent e29b6cbdaf
commit 49d01e0ca3
4 changed files with 84 additions and 4 deletions

View File

@ -376,7 +376,8 @@
android:name="android.support.PARENT_ACTIVITY"
android:value=".FDroid" />
</activity>
<activity android:name="org.acra.CrashReportDialog"
<activity
android:name="org.fdroid.fdroid.CrashReportActivity"
android:theme="@style/AlertDialogThemeDark"
android:process=":error_report"
android:launchMode="singleInstance"

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="24dp"
android:paddingRight="24dp"
android:paddingBottom="24dp"
android:paddingTop="20dp"
>
<TextView
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/crash_dialog_text"
/>
<TextView
android:id="@android:id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/crash_dialog_comment_prompt"
/>
<EditText
android:id="@android:id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:layout_marginTop="20dp"
/>
</LinearLayout>

View File

@ -0,0 +1,45 @@
package org.fdroid.fdroid;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.widget.EditText;
import org.acra.BaseCrashReportDialog;
public class CrashReportActivity extends BaseCrashReportDialog implements DialogInterface.OnDismissListener, DialogInterface.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle(R.string.crash_dialog_title)
.setIcon(android.R.drawable.ic_dialog_alert)
.setView(R.layout.crash_report_dialog)
.setPositiveButton(R.string.ok, this)
.setNegativeButton(R.string.cancel, this)
.create();
dialog.setCanceledOnTouchOutside(false);
dialog.setOnDismissListener(this);
dialog.show();
}
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
final String comment = ((EditText) findViewById(android.R.id.input)).getText().toString();
sendCrash(comment, "");
} else {
cancelReports();
}
finish();
}
}

View File

@ -67,9 +67,7 @@ import sun.net.www.protocol.bluetooth.Handler;
@ReportsCrashes(mailTo = "reports@f-droid.org",
mode = ReportingInteractionMode.DIALOG,
resDialogTitle = R.string.crash_dialog_title,
resDialogText = R.string.crash_dialog_text,
resDialogCommentPrompt = R.string.crash_dialog_comment_prompt
reportDialogClass = CrashReportActivity.class
)
public class FDroidApp extends Application {