【问题标题】:How center custom dialog title on Android如何在 Android 上居中自定义对话框标题
【发布时间】:2015-02-11 09:58:18
【问题描述】:

我正在 android 上编写一个自定义对话框。 我使用 onCreateView 方法做到了这一点。

public class CheckpointLongPressDialog extends DialogFragment {

public void CheckpointLongPressDialog() {}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_checkpoint_long_press_dialog, container);
    getDialog().setTitle("TITLE");
    return view;
}    

如何以编程方式使标题居中?

【问题讨论】:

  • 当您可以简单地更改 fragment_checkpoint_long_press_dialog xml 文件时,为什么要通过编程方式来给自己带来压力?
  • @DerGolem 你是对的,但我认为有一种简单的方法可以以编程方式完成此操作
  • 在 xml(1 行 代码)中做到这一点更简单

标签: android android-dialog


【解决方案1】:

也许它不是最好的方法,我使用自定义标题 TextView。

TextView title = new TextView(mainActivity);
title.setText(alertTitle);
title.setBackgroundResource(R.drawable.gradient);
title.setPadding(10, 10, 10, 10);
title.setGravity(Gravity.CENTER); // this is required to bring it to center.
title.setTextSize(22);
getDialog().setCustomTitle(title);

【讨论】:

  • 我尝试这种方式但是找不到函数setCustomTitle(title)
【解决方案2】:

我使用构建器解决了这个问题并膨胀了 xml 布局。

private AlertDialog.Builder builder;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the Builder class for convenient dialog construction
    builder = new AlertDialog.Builder(getActivity());

    LayoutInflater inflater = getActivity().getLayoutInflater();

    builder.setView(inflater.inflate(R.layout.fragment_checkpoint_long_press_dialog, null));


    // Create the AlertDialog object and return it
    return builder.create();
}

【讨论】:

    【解决方案3】:

    试试这个..

    final int titleId = getActivity().getResources().getIdentifier("alertTitle", "id", "android");
    TextView title = (TextView) getDialog().findViewById(titleId);
    if (title != null) {
        title.setGravity(Gravity.CENTER);
    }
    

    【讨论】:

      【解决方案4】:

      如果您使用整个布局来膨胀您的自定义标题怎么办?除了getDialog().setTitle("TITLE");,您还可以在标题的自定义布局中包含一个TextView。

      【讨论】:

        【解决方案5】:

        标题视图使用默认主题。您有 2 种方式来做您想做的事,第一种方式更适合提供更个性化的体验:

        1. 使用这个来有一个没有标题的对话框,然后在这个片段的布局中自定义标题栏。

          dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);

        2. 扩展对话框的默认主题并更新它,然后在此对话框中设置它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-23
          • 2014-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多