Фрагмент диалога Android устраняет черные границы (сверху и снизу)

Необходимо убрать верхнюю и нижнюю границы фрагмента диалога. Как ты делаешь это?

    AlertDialog.Builder builder = new AlertDialog.Builder(activity);
    builder.setCancelable(true);

    LayoutInflater inflater = LayoutInflater.from(activity);
    View view = inflater.inflate(R.layout.variants_dialog, null);

    // setup views
    setupListView(view);
    ...

    builder.setView(view);
    return builder.create(); // HERE I HAVE TOP & BOTTOM BLACK BORDERS

Это ничего не делает:

        builder.setView(view);
        AlertDialog result = builder.create();
        result.getWindow().setBackgroundDrawable(new ColorDrawable());
        return result;

Нет такого метода:

         dialog.setView(layout, 0, 0, 0, 0);

person pulancheck1988    schedule 30.07.2012    source источник
comment
ааа, Android, в каждом представлении есть свои маленькие скрытые головоломки, чтобы часами разгадывать их... такой веселый ты. Я надеюсь, что в 5.0 будет больше недокументированного, случайного веселья!   -  person samis    schedule 04.12.2012


Ответы (4)


Я не так хорошо знаком с DialogFragments, однако с обычными диалогами для этого вы обычно используете R.value.styles и добавляете:

 <style name="myDialog" parent="@android:style/Theme.Dialog">
    <item name="android:buttonStyle">@style/Button</item>
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:textColor">#FFFFFFFF</item>
    <item name="android:shadowColor">#cdc9c9</item>
    <item name="android:shadowDx">0</item>
    <item name="android:shadowDy">-1</item>
    <item name="android:shadowRadius">0.5</item>
</style>

И установите в своем диалоге стиль myDialog. Однако с dialogFragments кажется, что вам нужно определить стиль, когда вы инициализируйте его, DialogFragment.STYLE_NO_FRAME;, надеюсь, это немного поможет, хотя я знаю, что это не полный ответ.

person digiphd    schedule 30.07.2012

НАШЛИ РЕШЕНИЕ!!

Здесь нет

setView(layout, 0, 0, 0, 0);

на построителе из dialogFragment, но у AlertDialog есть этот метод.. поэтому вместо возврата

builder.create();

сделай это

//dont set view for builder!
AlertDialog result = builder.create();
result.setView(view, 0, 0, 0, 0);
return result;
person pulancheck1988    schedule 01.08.2012
comment
О, ваша версия Android не такая случайная, как моя, поэтому, к сожалению, это случайное решение случайной проблемы не сработало для меня. К счастью, в наши дни в моде отвратительные черные полосы. - person samis; 04.12.2012

Вот что сработало для меня:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
person Leo Landau    schedule 18.12.2012
comment
Просто это сработало, чтобы удалить верхнюю границу DialogFragment. - person Hamid Shatu; 30.09.2014

У меня не так давно была аналогичная проблема. Проблема в том, что Builder вообще не позволяет вам играть с отступами диалогового окна. Моя работа заключалась в создании подкласса AlertDialog:

final class PaddinglessDialog extends AlertDialog {
    public PaddinglessDialog(Context context, int theme) {
        super(context, theme);
    }
}

Затем я продолжил использовать его следующим образом:

PaddinglessDialog alertDialog = new PaddinglessDialog(this, android.R.style.Theme_Holo_Light_Panel);
View layout = LayoutInflater.from(this).inflate(R.layout.my_dialog_layout, ...);
alertDialog.setView(layout, 0, 0, 0, 0);
alertDialog.setCanceledOnTouchOutside(false);
...
dialog = alertDialog;
person dineth    schedule 30.07.2012