#android #android-alertdialog
#Android #android-alertdialog
Вопрос:
Я пытаюсь создать пользовательский 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>
в activity:
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);
Ответ №1:
В качестве опции, если вы хотите создать пользовательский диалог, вы можете сделать вот так:
@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);
}
}
Комментарии:
1. затем установите фон прозрачным в теме для этого диалогового окна
2. я не использовал theme
Ответ №2:
Попробуйте этот макет и настройте. Нет необходимости во вложенной линейной компоновке. Это вызывает проблемы с производительностью.
<?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>
И в activity или fragment вы можете вызывать следующим образом. Нет необходимости использовать диалоговое окно оповещения.
private fun showDialog(context: Context){
val dialog = Dialog(context)
dialog.setContentView(R.layout.layout_for_long_like_button_option)
dialog.show()
}
Комментарии:
1. Можете ли вы опубликовать снимок экрана с этим кодом? Потому что это работает у меня.
2. пожалуйста, проверьте рисунок
3. Вы использовали AlertDialog или обычный диалог?
4. Пожалуйста, попробуйте мою функцию ShowDialog. Не используйте диалоговое окно оповещения.
5. что здесь такое val?
Ответ №3:
Просто обновите 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));
Комментарии:
1. я хочу убрать пробел (там будет просто всплывающее окно с иконкой facebook like button), вместо того, чтобы расширять макет до размера alertdialog.
2. @Imranrana07 понял вашу точку зрения, я обновил свой ответ выше, попробуйте, пожалуйста
3. это просто делает фон прозрачным. я пытаюсь создать кнопку «Мне нравится facebook». если вы можете, пожалуйста, помогите мне
4. но ваш вопрос касался удаления этого дополнительного белого фона, пожалуйста, уточните, чего вы хотите, и это единственный способ, которым мы можем вам помочь
5. извините, это простая ошибка, но я сказал вам, что мне нужна кнопка facebook like, которая всплывает чуть выше кнопки.
Ответ №4:
спасибо вам, ребята, за ваше любезное сотрудничество. я решил свою проблему самостоятельно. я просто добавил макет в нужную мне позицию и решил все. еще раз спасибо