【问题标题】:Set title and (title) icon for a custom alert dialog为自定义警报对话框设置标题和(标题)图标
【发布时间】:2011-01-17 10:51:20
【问题描述】:

我没有设法为我的自定义警报对话框设置标题或(标题)图标。 我的代码:

public class AddingFavoriteDialog extends AlertDialog {
private OnAddingFavoriteListener       onAddingFavoriteListener;
private Context context;
private GeocodingManager geocodingManager;
private FavoritesActivity favoritesActivity;

public AddingFavoriteDialog(Context context, OnAddingFavoriteListener onAddingFavoriteListener) {
 super(context, android.R.style.Theme_Dialog);

this.context = context;
this.onAddingFavoriteListener = onAddingFavoriteListener;
this.geocodingManager = new GeocodingManager(context);
this.favoritesActivity = (FavoritesActivity) context;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

 setContentView(R.layout.adding_favorite_dialog2);

 setTitle("MYTITLE");

 setIcon(R.drawable.star_gold);
 }

我做错了什么?我还尝试通过在onCreate() 以及构造函数中调用super.setTitle("MYTITLE"); 来设置它。

编辑:即使setButton(BUTTON_POSITIVE, context.getString(R.string.button_value_OK), new OnClickListener() {...} 似乎也不起作用。

【问题讨论】:

  • 尝试使用 this.setTtitle("");或者如果这不起作用 Classname.steTitle("");
  • 你是如何实例化对话框的?

标签: android title android-alertdialog customdialog


【解决方案1】:

使用setView 而不是setContentView,因为setContentView 替换了AlertDialog 中的所有内容,包括默认的标题栏和图标(以及按钮等)。相反,setView 只替换了中间部分(如果你愿意的话,就是消息)。

如果需要,请使用LayoutInflater

【讨论】:

  • 好吧,这似乎是对的。但不是,如果我尝试 findViewById() 它不会识别我的任何视图。
  • 使用LayoutInflater 膨胀你的布局会给你一个View 对象。在该对象上使用findViewById(),而不是在 AlertDialog 本身上。让我们知道这是否有效。
  • 尽管我很确定,但我已经在几个小时前尝试过了……猜猜看:没有错误了。但也没有对话了。 ;) 只有一个普通的对话窗口,没有任何内容、标题或其他任何内容。
  • 听起来不直观...我希望内容视图是中间部分。
【解决方案2】:

扩展 Dialog 而不是 AlertDialog 将解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 2023-04-04
    • 2023-03-13
    • 2015-04-24
    • 2013-05-30
    相关资源
    最近更新 更多