Android自定义对话框类标题问题

时间:2009-12-10 13:04:47

标签: android

public class MessageDisplayDialog extends Dialog implements OnClickListener

{

    public MessageDisplayDialog(Context context, String title, String message)
    {
        super(context);
        setTitle(title);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.color.default_text_color);
        Log.v(getClass().getSimpleName(), "MessageDisplayDialog");
        LinearLayout objLinearLayout = new LinearLayout(context);
        LinearLayout objButtonLayout = new LinearLayout(context);

        TextView objMesaageView = new TextView(context);
        objMesaageView.setText(message);
        objMesaageView.setTextColor(Color.WHITE);
        objMesaageView.setGravity(Gravity.CENTER_HORIZONTAL);
        objMesaageView.setPadding(0, 0, 0, 10);

        Button okButton = new Button(context);
        okButton.setText(" OK ");
        okButton.setOnClickListener(this);
        okButton.setWidth(100);
        objButtonLayout.addView(okButton);
        objButtonLayout.setGravity(Gravity.CENTER_HORIZONTAL);
        objButtonLayout.setPadding(0, 5, 0, 0);
        objButtonLayout.setBackgroundColor(Color.LTGRAY);

        objLinearLayout.setOrientation(LinearLayout.VERTICAL);
        objLinearLayout.addView(objMesaageView);
        objLinearLayout.addView(objButtonLayout);

        setContentView(objLinearLayout);
        //LayoutParams param = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        //this.addContentView(objLinearLayout, param);
    }

    public void onClick(View v)
    {
        this.dismiss();
    }
}

但是对话框没有显示标题下面的栏,如何破解它。

4 个答案:

答案 0 :(得分:3)

我认为您的问题已在此主题中得到解答

Android - change custom title view at run time

请在提问之前先做一些搜索并接受答案。

答案 1 :(得分:2)

我认为内置对话框中标题和消息之间的水平边框是AlertDialog的一部分,而不是基本的Dialog类,尽管我可能完全错了。无论如何,每当我尝试做与你正在做的事情类似的事情时,那条水平线就会消失,而我却永远无法将它取回。

我最后编写了自己的对话框布局XML文件,并使用<shape> drawable创建了自己的水平线。实际上,创建这样的完全自定义对话框布局实际上相当轻松,并且可以让您更好地控制对话框的外观。

答案 2 :(得分:2)

我知道这是旧的,但是在自定义对话框中绘制自己的行的解决方案与ICS不兼容。

默认情况下,它会显示您的行和ICS现在包含的行。所以你在屏幕上会看到两行。

答案 3 :(得分:1)

使用两行代码删除对话框标题

Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(dialog.getWindow().FEATURE_NO_TITLE);