Как можно добавить значок в правый заголовок DialogFragment?

В настоящее время я работаю с DialogFragment, но не могу установить значок в правом верхнем углу.

Я видел несколько трюков для отображения значка в виде значка диалога:

 @Override
 public Dialog onCreateDialog(Bundle savedInstanceState) {
  Dialog myDialog = new AlertDialog.Builder(getActivity())
     .setIcon(R.drawable.ic_info)
     .setTitle(title)
  return myDialog;
 }

но это не поможет, так как значок находится слева и не интуитивно понятен для нажатия

Я знаю, что могу установить пользовательский макет, но я был бы уверен, что макет будет отражать все настройки производителя ОС и OEM (тот же стиль)

Любая помощь?

введите здесь описание изображения


person Waza_Be    schedule 23.01.2013    source источник


Ответы (1)


Я знаю, что это старый вопрос, и он, скорее всего, был решен, но, возможно, кто-то найдет его полезным.

В вашем методе onCreateView сделайте что-то вроде этого:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    getDialog().requestWindowFeature(Window.FEATURE_LEFT_ICON);
    // your view related code, inflate or whatever
    ...

Это подготавливает представление заголовка с контейнером для установки значка, но он не будет существовать до тех пор, пока не будет создан экземпляр иерархии представлений, поэтому вам нужно установить значок для метода, который вызывается после этого, например onActivityCreated, что-то вроде этого:

@Override
public void onActivityCreated(Bundle savedInstanceState)
{
     super.onActivityCreated(savedInstanceState);
     getDialog().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.ic_launcher);
}

Обязательно сначала вызовите метод super, иначе ваш значок может быть переопределен.

Надеюсь, это поможет кому-то...

Привет из Мексики...

person DarkTide    schedule 06.06.2014
comment
Вопрос никогда не бывает слишком старым для ответа :) Мне было интересно, почему бы не добавить значок в xml для самого DialogFragment? Это возможно? - person jj_; 30.01.2015