繁体   English   中英

标题不在AlertDialog上垂直居中

[英]Title not center vertically on AlertDialog

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

在此处输入图片说明

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

在此处输入图片说明

我尝试使用以下命令设置标题和图标:

builder.setTitle("Help");
builder.setIcon(R.drawable.help);

上面的代码在第二种情况下标题并不居中。 此后,我一直尝试切换到标题的XML布局并使用builder.setCustomTitle(...); 使用以下XML设置标题:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:minHeight="72dp"
    android:orientation="horizontal"
    android:gravity="center_vertical"
    android:paddingLeft="14dp">

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/help"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Help"
    android:textSize="24sp"
    android:textColor="#ff33b5e5"/>

</LinearLayout>

我已经尝试过属性minHeightgravitylayout_gravitypadding 我已经能够使用padding属性在第二种情况下将标题居中,但是在第一种情况下的标题不再居中。 尽管可以使用padding ,但我想找到一种解决方案,使标题在每种情况下都居中,而与是否需要滚动消息无关。 我觉得有些简单和/或简单的事情我已经忽略了。

同样,消息内容可以简单地使用builder.setMessage();设置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();
}
}
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);
    builder.setCustomTitle(title_txt);
    builder.setPositiveButton("Yes",
            new DialogInterface.OnClickListener() 
    {
                @Override
         public void onClick(DialogInterface dialog, int which) 
         {
         }

    });
    builder.setNegativeButton("No",
            new DialogInterface.OnClickListener() 
   {
            @Override
            public void onClick(DialogInterface dialog, int which) 
            {
                dialog.dismiss();

            }
    });
   builder.show();

您是否尝试过将重力设置为“中心”? 摆脱填充等

因此,我最终通过更自定义的XML布局解决了此问题,该布局包含消息TextView而不是使用.setMessage()

XML最终是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_vertical"
    android:padding="10dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:src="@drawable/help"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:text="Help"
        android:textSize="24sp"
        android:textColor="#ff33b5e5"/>
</LinearLayout>

<View android:id="@+id/titleDivider"
    android:layout_width="match_parent"
    android:layout_height="2dip"
    android:background="#ff33b5e5" />

<TextView
    android:id="@+id/message"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxLines="16"
    android:minLines="3"
    android:scrollbars="vertical"
    android:fadeScrollbars="false"
    android:textSize="20sp"
    android:padding="7dp"/>

</LinearLayout>

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();

    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();
}
}

为了使较大消息滚动以正常运行,使用了此处的解决方案。

这段代码给了我以下结果:

在此处输入图片说明

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM