【问题标题】:Reduce the margin of the title from CustomDialog从 CustomDialog 减少标题的边距
【发布时间】:2012-12-17 00:10:57
【问题描述】:

在我的应用程序中,我有一个自定义对话框,它在顶部显示一些不需要的边距,而在 xml 中,我没有在顶部定义任何类型的边距或填充。我的对话框仍然是这样的 -

相同的代码就像 -

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/customDialogRelativeLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dip"
            android:layout_marginRight="15dip"
            android:textStyle="bold"
            android:layout_alignParentTop="true"
            android:textColor="@color/white"
            android:textSize="22sp"/>

        <View
            android:id="@+id/view_separator_in_dialog"
            style="@style/dialog_separator"
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:visibility="gone" />

        <TextView
            android:id="@+id/tv_message"
            style="@style/dialog_message"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:visibility="gone" />

        <EditText
            android:id="@+id/et_input_text"
            style="@style/dialog_edittext"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/tv_message"
            android:paddingLeft="10dip"
            android:visibility="gone" />

        <TextView
            android:id="@+id/tv_caption"
            style="@style/dialog_caption"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/et_input_text"
            android:visibility="gone" />

        <LinearLayout
            android:id="@+id/rl_dialog_buttons_horizontal"
            style="@style/dialog_rl_buttons"
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_left_dialog"
                style="@style/dialog_button_left"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:visibility="gone" />

            <Button
                android:id="@+id/btn_right_dialog"
                style="@style/dialog_button_right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:visibility="gone" />

        </LinearLayout>
</RelativeLayout>

我希望删除“确认”文本上不必要的空白。

引发对话框的类就像 -

公共类 MyClass 扩展 Activity{

private View _separator;
private CustomDialogBox _dialog;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.custom_dialog);

    Object[] data = new Object[]{"Confirmation!", "Contact with this number already exits. Do you want to merge?", "Merge", "Create New"};
    raiseDailog(this, data);
}

private void raiseDailog(Context context, Object[] data) {
    _dialog = new CustomDialogBox(this, data);
    _dialog.show();
}

}

我的 CustomDialog 类看起来像 -

公共类 CustomDialogBox 扩展对话框{

private TextView _title, _message;
private Button _leftButton, _rightButton;
private View _separator;

private String textviewTop;
private String textviewMiddle;
private String buttonText1;
private String buttonText2;

public CustomDialogBox(Context context, Object[] data) {
    super(context);

    setContentView(R.layout.custom_dialog);
    initializeViews();
    fillData(data);
}

private void fillData(Object[] data) {
    try {
        int i = 0;
        textviewTop = (String) data[i++];

        textviewMiddle = (String) data[i++];

        buttonText1 = (String) data[i++];
        buttonText2 = (String) data[i++];
    } catch (Exception e) {
        e.printStackTrace();
    }

    generateDialog();
}

private void generateDialog() {
    //Title goes here
    _title.setVisibility(View.VISIBLE);
    _title.setText(textviewTop);

    //Separator goes here
    _separator.setVisibility(View.VISIBLE);

    //Message goes here
    _message.setVisibility(View.VISIBLE);
    _message.setText(textviewMiddle);

    //Ok button goes here
    _leftButton.setVisibility(View.VISIBLE);
    _leftButton.setText(buttonText1);

    //Cancel button goes here
    _rightButton.setVisibility(View.VISIBLE);
    _rightButton.setText(buttonText2);
}

private void initializeViews() {
    _title = (TextView) findViewById(R.id.tv_title);
    _message = (TextView) findViewById(R.id.tv_message);

    _leftButton = (Button) findViewById(R.id.btn_left_dialog);
    _rightButton = (Button) findViewById(R.id.btn_right_dialog);

    _separator = findViewById(R.id.view_separator_in_dialog);
}

}

请帮忙。

【问题讨论】:

  • 将您的父布局更改为具有垂直方向的 LinearLayout 并查看任何差异
  • 谢谢。但它不工作。结果相同。
  • 你能贴出你如何使用这个布局的代码吗?我相信最大的差距是由于 dialogBu​​ilder 自己的标题空间
  • @Rajkiran 你使用Dialog还是AlertDialog?以及你想要什么对话框或警报对话框?
  • @Samir :我创建了一个名为 CustomDialogBox 的类,它扩展了 Dialog。

标签: android customdialog


【解决方案1】:

添加这个this.requestWindowFeature(Window.FEATURE_NO_TITLE);

喜欢,

 public CustomDialogBox(Context context, Object[] data) {
        super(context);

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.custom_dialog);
        initializeViews();
        fillData(data);

    }

【讨论】:

    【解决方案2】:

    &lt;item name="android:windowNoTitle"&gt;true&lt;/item&gt; 添加到对话框主题。

    <style name="DialogTheme" parent="android:Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
    </style>
    

    然后使用这个主题创建对话框。

    public class ThemeDialog extends Dialog {
        protected ThemeDialog(Context context) {
           super(context, R.style.DialogTheme);
        }
    }
    

    【讨论】:

      【解决方案3】:

      对我来说,我的 custom_dialog.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:orientation="vertical">
      </LinearLayout>
      

      也许也使用它或将您的 layout_height 设置为 fill_parent?

      【讨论】:

      • 也与编码无关,我会检查您的语法以获取消息。
      • 我试过这段代码。但它不工作。您可能想尝试将您的代码放入我上面给出的代码中。
      猜你喜欢
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      相关资源
      最近更新 更多