Как удалить лишнее пространство из пользовательского AlertDialog - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь сделать пользовательский AlertDialog.Проблема заключается в дополнительном пространстве в диалоге (белый прямоугольник на картинке).Как это убрать?

dialog вот мой код:

<?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);

Ответы [ 4 ]

0 голосов
/ 28 марта 2019

спасибо, ребята, за ваше любезное сотрудничество. я решил свою проблему сам. я просто добавил макет в нужную мне позицию и решил все. еще раз спасибо

0 голосов
/ 27 марта 2019

Как вариант, если вы хотите создать собственный диалог, вы можете сделать так:

  @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 голосов
/ 27 марта 2019

Попробуйте этот макет и настройте. Нет необходимости во вложенной линейной разметке. Это вызывает проблемы с производительностью.

<?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 голосов
/ 27 марта 2019

Просто обновите 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));
...