如何从自定义AlertDialog中删除多余的空间

问题描述 投票:0回答:4

我正在尝试制作自定义AlertDialog。问题是对话框中的额外空间(图中的白色矩形)。如何删除它?

这是我的代码:

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

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp"
        android:background="@drawable/round_alert_like_ui">

         <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/like_icon"
            android:layout_marginStart="10dp"
            android:layout_gravity="center"
            android:id="@+id/likeIconId"
            android:fitsSystemWindows="true"
            android:padding="5dp" />

         <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/wowButtonId"
                android:layout_marginStart="5dp"
                android:src="@drawable/love_icon"
                android:background="@drawable/round_button_for_round_menu_like_button"
                android:layout_gravity="center" />

         <ImageButton
                android:layout_width="40dp"
                android:layout_height="35dp"
                android:id="@+id/blehButtonId"
                android:layout_marginStart="5dp"
                android:src="@drawable/bleh"
                android:background="@drawable/round_button_for_round_menu_like_button"
                android:layout_gravity="center" />

         <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/dislikeButtonId"
            android:layout_marginStart="5dp"
            android:src="@drawable/dislike_icon"
            android:background="@drawable/round_button_for_round_menu_like_button"
            android:layout_gravity="center" />
    </LinearLayout>
</LinearLayout>

在活动中:

final AlertDialog.Builder builder = new AlertDialog.Builder(context);
final AlertDialog alertDialog = builder.create();
View view1 = LayoutInflater.from(context).inflate(R.layout.layout_for_long_like_button_option, null);
android android-alertdialog
4个回答
0
投票

作为一个选项,如果您要创建自定义对话框,您可以这样做:

  @Override
  public void onStart() {
    super.onStart();
    Dialog dialog = getDialog();
    if (dialog != null) {
      int width = ViewGroup.LayoutParams.WRAP_CONTENT;
      int height = ViewGroup.LayoutParams.WRAP_CONTENT;
      dialog.getWindow().setLayout(width, height);
    }
  }

0
投票

试试这个布局并自定义。无需嵌套线性布局。它会导致性能问题。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="wrap_content"
              android:layout_height="48dp"
              android:background="@color/colorPrimary"
              android:padding="4dp">

    <ImageButton
            android:id="@+id/likeIconId"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:background="@android:color/black"
            android:src="@android:drawable/ic_delete"/>

    <Space
            android:layout_width="8dp"
            android:layout_height="0dp"/>

    <ImageButton
            android:id="@+id/wowButtonId"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:background="@android:color/black"
            android:src="@android:drawable/ic_delete"/>

    <Space
            android:layout_width="8dp"
            android:layout_height="0dp"/>

    <ImageButton
            android:id="@+id/blehButtonId"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@android:color/black"
            android:adjustViewBounds="true"
            android:src="@android:drawable/ic_delete"/>

    <Space
            android:layout_width="8dp"
            android:layout_height="0dp"/>

    <ImageButton
            android:id="@+id/dislikeButtonId"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@android:color/black"
            android:adjustViewBounds="true"
            android:src="@android:drawable/ic_delete"/>
</LinearLayout>

在活动或片段中你可以像这样打电话。无需使用警报对话框。

private fun showDialog(context: Context){
        val dialog = Dialog(context)
        dialog.setContentView(R.layout.layout_for_long_like_button_option)
        dialog.show()
    }

0
投票

只需将您父母layout_widthLinearLayout和直接孩子LinearLayout更新为match_parent而不是wrap_content。请参阅以下更新代码:

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

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="10dp"
            android:background="@drawable/round_alert_like_ui">

             <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:src="@drawable/like_icon"
                android:layout_marginStart="10dp"
                android:layout_gravity="center"
                android:id="@+id/likeIconId"
                android:fitsSystemWindows="true"
                android:padding="5dp"/>

             <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/wowButtonId"
                    android:layout_marginStart="5dp"
                    android:src="@drawable/love_icon"
                    android:background="@drawable/round_button_for_round_menu_like_button"
                    android:layout_gravity="center"/>

             <ImageButton
                    android:layout_width="40dp"
                    android:layout_height="35dp"
                    android:id="@+id/blehButtonId"
                    android:layout_marginStart="5dp"
                    android:src="@drawable/bleh"
                    android:background="@drawable/round_button_for_round_menu_like_button"
                    android:layout_gravity="center"/>

             <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/dislikeButtonId"
                android:layout_marginStart="5dp"
                android:src="@drawable/dislike_icon"
                android:background="@drawable/round_button_for_round_menu_like_button"
                android:layout_gravity="center"/>
        </LinearLayout>
    </LinearLayout>

更新:

在调用alertDialog.show()后,尝试将透明背景设置为警报对话框。

alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

0
投票

谢谢你们的友好合作。我自己解决了我的问题。我只是添加了一个布局到我想要的位置并解决了所有问题。再次感谢你

© www.soinside.com 2019 - 2024. All rights reserved.