标题在AlertDialog上垂直居中

10 浏览
0 Comments

标题在AlertDialog上垂直居中

我有一个AlertDialog标题,在对话框的消息内容不需要滚动时,标题会垂直居中,如下图所示:

现在,当消息内容需要滚动时,标题不再垂直居中,如下图所示:

我尝试使用以下代码进行初始设置标题和图标:

builder.setTitle("帮助");

builder.setIcon(R.drawable.help);

然而,在上面的代码中,标题在第二种情况下无法居中。后来,我尝试使用XML布局来设置标题,并使用builder.setCustomTitle(...)来设置标题,XML代码如下:

我尝试使用minHeight、gravity、layout_gravity和padding属性。我通过使用padding属性将标题在第二种情况下居中,但第一种情况下的标题不再居中。虽然padding可以起作用,但我希望找到一个解决方案,使标题在每种情况下都居中,无论消息是否需要滚动。我觉得我可能忽略了一些简单和直接的东西。

另外,消息内容只是使用builder.setMessage()来设置。

编辑1:我应该澄清一下,我不想让标题水平居中,只想让它垂直居中,并且左对齐加上边距/填充。最终,我希望每个标题栏都看起来像上面的第一张图片。

编辑2:这是对话框的Java代码,如果有帮助的话:

public class HelpDialog extends DialogFragment {

// Bundle variables/args

final static String ARG_HELP = "help";

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

LayoutInflater inflater = getActivity().getLayoutInflater();

View view = inflater.inflate(R.layout.custom_help_title, null);

Bundle args = getArguments();

//initial way it was done

//builder.setTitle("Help");

//builder.setIcon(R.drawable.help);

//now with the custom xml

builder.setCustomTitle(view);

builder.setMessage(args.getCharSequence(ARG_HELP));

builder.setPositiveButton("Done", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dismiss();

}

});

return builder.create();

}

}

0
0 Comments

问题的原因是AlertDialog的标题没有垂直居中显示。解决方法是移除标题的padding。

在这段代码中,AlertDialog的标题是通过创建一个TextView并设置为custom title来实现的。然而,标题文本的垂直居中显示没有被正确处理,导致出现了垂直偏移的问题。

解决方法是在创建标题TextView后,移除其padding属性。这样可以确保标题文本在AlertDialog中垂直居中显示。

以下是修改后的代码:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    TextView title_txt = new TextView(this);
    title_txt.setGravity(Gravity.CENTER_HORIZONTAL);
    title_txt.setText("Hello");
    title_txt.setTextSize(16);
    title_txt.setPadding(0, 0, 0, 0); // 移除padding属性
    builder.setCustomTitle(title_txt);
    builder.setPositiveButton("Yes",
            new DialogInterface.OnClickListener() 
    {
         public void onClick(DialogInterface dialog, int which) 
         {
         }
    });
    builder.setNegativeButton("No",
            new DialogInterface.OnClickListener() 
   {
            public void onClick(DialogInterface dialog, int which) 
            {
                dialog.dismiss();
            }
    });
   builder.show();

通过移除标题TextView的padding属性,可以确保标题文本在AlertDialog中垂直居中显示。这样就解决了标题没有垂直居中显示的问题。

0
0 Comments

问题:AlertDialog中的标题无法垂直居中显示。

解决方法:

1. 尝试将标题的gravity设置为'center',并去除padding等属性。

2. 这样可以水平居中标题,但是垂直仍然无法居中。

3. 尝试将gravity属性值设置为center_horizontal|center_vertical。

4. 尽管已经设置了上述属性,但仍然无法实现标题的垂直居中。

5. 将根布局设置为RelativeLayout,在其中添加一个宽度和高度为wrap_content的LinearLayout。LinearLayout中包含图标和TextView。给LinearLayout添加layout_centerInParent属性,并将其设置为true。

6. 尽管已经尝试了上述方法,但标题仍然无法垂直居中。感谢你的努力。

0
0 Comments

问题的出现原因:

在AlertDialog中,设置的标题无法垂直居中显示。

解决方法:

通过创建一个自定义的XML布局来替换使用.setMessage()方法来设置消息的TextView。

具体的解决方法如下:

1. 创建一个XML布局文件,包含如下内容:



    
        
        
    
    
    

2. 在Java代码中,使用自定义的布局文件来创建AlertDialog:

public class HelpDialog extends DialogFragment{
    // Bundle variables/args
    final static String ARG_HELP = "help";
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.custom_help_title, null);
        Bundle args = getArguments();
        builder.setView(view);
        TextView message = (TextView) view.findViewById(R.id.message);
        message.setMovementMethod(ScrollingMovementMethod.getInstance());
        message.setText(args.getCharSequence(ARG_HELP));
        builder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dismiss();
            }
        });
        return builder.create();
    }
}

3. 为了实现较大消息的滚动效果,使用了这里提供的解决方案。

通过上述的代码,问题得到了解决。

0