Скрыть кнопки по умолчанию в DialogPreference - PullRequest
1 голос
/ 02 сентября 2011

У меня в настоящее время есть собственный класс Dialog, который расширяет DialogPreference (который, конечно, является частью PreferenceScreen).

В этом диалоге есть пользовательские кнопки, которые обрабатывают сохранение и отмену. Для этого я бы хотел избавиться от стандартных «положительных» и «отрицательных» кнопок.

Попытка с использованием метода getButton AlertDialog, но безуспешно.

Ответы [ 2 ]

11 голосов
/ 29 ноября 2011

Если вы хотите создать пользовательский DialogPreference, вам нужно создать свой собственный класс и расширить DialogPreference. Чтобы скрыть кнопки, используйте setPositiveButtonText(null); и setNegativeButtonText(null); в конструкторе

package ...;

import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;

public class MyDialogPreference extends DialogPreference {

    public MyDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        setPositiveButtonText(null);
        setNegativeButtonText(null);
    }
}
2 голосов
/ 02 сентября 2011

в вашем xml используйте следующее вместо DialogPreference:

<Preference
    android:title="This acts as a button"
    android:key="button"
    android:summary="This can act like a button to create it's own dialog"/>

Затем в Java:

Preference button = (Preference)findPreference("button");
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

            @Override
            public boolean onPreferenceClick(Preference arg0) {
                showDialog(MY_DIALOG); // let's say MY_DIALOG is 'final int MY_DIALOG = 1;' in the class body
                return false;
            }
        });

Затем добавьте в тело вашего класса:

@Override
    protected Dialog onCreateDialog(int id) {

    switch (id) {       

    case SHOW_APP_STRING:
      LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      View mylayout = inflater.inflate(R.layout.mylayout, null);


     final AlertDialog myDialog = new AlertDialog.Builder(this)
     .setView(mylayout)
     .show();
      //The buttons are below the dialog so you can close the dialog within your button listeners
      Button save = (Button)myLayout.findViewById(R.id.save);
      Button cancel = (Button)myLayout.findViewById(R.id.cancel);
      //set onClickListeners for both of your buttons

      return myDialog;
    }

}

Я не уверен, что это лучший метод, но это то, как я это делаю, и он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...