FragmentDialog中的标题无法完全显示

时间:2014-01-06 11:07:32

标签: android

我创建了自定义片段并设置了一些标题:

        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        getDialog().setTitle(R.string.personalAuthDialogMessage);
        getDialog().setCanceledOnTouchOutside(false);
        View v = inflater.inflate(R.layout.personal_pass_dialog, null);
        personalPasswordEditText = (EditText) v.findViewById(R.id.personalPasswordEditText);
        buttonPositive = (Button) v.findViewById(R.id.personAuthButtonPositive);
        buttonNegative = (Button) v.findViewById(R.id.personAuthButtonNegative);
        buttonPositive.setOnClickListener(this);
        buttonNegative.setOnClickListener(this);
        return v;
    }

当我在我的活动中调用它时,一切都很好,除了标题的大小不适合屏幕。它看起来像这样: enter image description here

原始邮件是“请确认您的密码”。

UPD。布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:id="@+id/personalDialogLayout"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">
<EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:inputType="textPassword"
        android:id="@+id/personalPasswordEditText"
        android:layout_gravity="center"/>
<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <Button
            android:layout_width="match_parent"
            android:layout_height="80dip"
            android:text="@string/confirmOk"
            android:id="@+id/personAuthButtonPositive" android:layout_weight="1"/>
    <Button
            android:layout_width="match_parent"
            android:layout_height="80dip"
            android:text="@string/confirmCancel"
            android:id="@+id/personAuthButtonNegative" android:layout_weight="1"/>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

你有不同的选项来处理它。基本上你可以强制对话框的布局来增加它的宽度:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:id="@+id/personalDialogLayout"
          android:layout_width="300dp"
          android:layout_height="fill_parent">

但是这个解决方案不方便,因为有些屏幕比较小,如果你想让你的标题改变它可能不合适等等......

所以你可以做的是从Dialog中删除标题,使用以下代码:

setStyle(DialogFragment.STYLE_NO_TITLE, 0);

自己处理标题:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:id="@+id/personalDialogLayout"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">
<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:id="@+id/dialogTitle"/>

<EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:inputType="textPassword"
        android:id="@+id/personalPasswordEditText"
        android:layout_gravity="center"/>
<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <Button
            android:layout_width="match_parent"
            android:layout_height="80dip"
            android:text="@string/confirmOk"
            android:id="@+id/personAuthButtonPositive" android:layout_weight="1"/>
    <Button
            android:layout_width="match_parent"
            android:layout_height="80dip"
            android:text="@string/confirmCancel"
            android:id="@+id/personAuthButtonNegative" android:layout_weight="1"/>
</LinearLayout>

并设置标题:

View v = inflater.inflate(R.layout.personal_pass_dialog, null);
TextView title = (TextView) v.findViewById(R.id.dialogTitle);
title.setText(R.string.personalAuthDialogMessage);