我正在尝试制作自定义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);
作为一个选项,如果您要创建自定义对话框,您可以这样做:
@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);
}
}
试试这个布局并自定义。无需嵌套线性布局。它会导致性能问题。
<?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()
}
只需将您父母layout_width
的LinearLayout
和直接孩子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));
谢谢你们的友好合作。我自己解决了我的问题。我只是添加了一个布局到我想要的位置并解决了所有问题。再次感谢你