Флажок в AlertDialog "вытолкнут" TextView - PullRequest
2 голосов
/ 13 августа 2011

Я пытаюсь создать AlertDialog, чтобы показать вводное сообщение в моем приложении, с флажком «Не показывать это снова» под ним.

Хорошо работает, когда сообщение AlertDialogкороткий, но когда он слишком длинный (требуется прокрутка), CheckBox больше не отображается.TextView выталкивает его.

XML для пользовательского представления (dont_show_again.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <CheckBox 
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:text="Don't show this again">
    </CheckBox>
</LinearLayout>

и код для отображения AlertDialog

String longMessage = getString(R.string.long_message);

LayoutInflater inflater = getLayoutInflater();
final View checkboxLayout = inflater.inflate(R.layout.dont_show_again, null);

AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("Some message")
.setMessage(longMessage)
.setView(checkboxLayout)
.setPositiveButton("Ok",
        new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        }
});

AlertDialog dialog = builder.create();
dialog.show();

Есть идеи, как это решить?Возможно, у кого-то есть пример работающего AlertDialog с флажком «Больше не показывать»?

Ответы [ 2 ]

4 голосов
/ 13 августа 2011

Не устанавливайте сообщения диалогового окна, вместо этого включайте его в макет xml как textView.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="vertical">

<TextView
    android:id="@+id/message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"    
    android:singleLine="false"
    android:maxLines="3"
    android:scrollbars="vertical"/>
<CheckBox 
    android:id="@+id/checkBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Don't show this again">
</CheckBox> 
</LinearLayout>
0 голосов
/ 13 августа 2011

Использовать макет XML из ответа ранее.

String longMessage = getString(R.string.long_message);
LayoutInflater inflater = getLayoutInflater();
final View checkboxLayout = inflater.inflate(R.layout.dont_show_again, null);
CheckBox cb = (CheckBox)checkboxLayout.findViewById(R.id.checkBox);
TextView tv = (TextView)checkboxLayout.findViewById(R.id.message);
tv.setText(longMessage);
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("Some message")
.setView(checkboxLayout)
.setPositiveButton("Ok",
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
    }
});
AlertDialog dialog = builder.create();
dialog.show();
...