如何在DialogFragment的标题栏右侧添加图标?

3

我目前正在使用DialogFragment,但是我无法在右上角设置图标。

我看到一些技巧可以将图标显示为对话框图标:

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

但是,这并没有帮助,因为图标在左侧,不容易点击。
我知道我可以设置自定义布局,但我想确保该布局反映所有操作系统和 OEM 制造商的自定义(相同样式)。
有什么帮助吗? enter image description here
1个回答

7

我知道这是一个老问题,很可能已经得到解决,但也许有人会发现它有用。

在您的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);
}

确保先调用超级方法,否则您的图标可能会被覆盖。

希望这能对某些人有所帮助...

来自墨西哥的问候...


一个问题永远不会太老,需要回答 :) 我在想,为什么不在 DialogFragment 的 xml 中添加图标呢?这可行吗? - Redoman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接