Добавление поля в BottomSheetDialogFragment - PullRequest
2 голосов
/ 14 марта 2020

Я попытался добавить маржу для моего BottomSheetDialogFragment, однако он ничего не сделал для полей.

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_margin="16dp">

    <TextView
        android:id="@+id/alertdialog_fragmail_newmessage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Test 1"
        android:textStyle="bold"
        android:padding="16dp"
        android:textColor="@color/colorBlackFont"
        android:layout_alignParentTop="true"
        android:gravity="center_vertical"
        android:drawablePadding="16dp"/>


  //More Textviews

</RelativeLayout>

Редактировать: _________________________________________________________________

Я попытался изменить XML на ответ ниже, однако он все еще не создает поля для моего нижнего листа. Диалог.

Код для диалога нижнего листа класс фрагмента:

public class FragMailMoreDialog extends BottomSheetDialogFragment {

    private static final String TAG = "FragMailMoreDialog";

    private Context mContext;


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = getContext();
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater,
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.alertdialog_layout_fragmailmore, container, false);
        ButterKnife.bind(this, view);


        return view;
    }
}

Код для раздувания нижнего листа:

private void inflateMoreDialog(){
        FragMailMoreDialog moreDialog = new FragMailMoreDialog();
        if (getFragmentManager() != null) {
            moreDialog.show(getFragmentManager(), "FRAGMAIL_MORE_DIALOG");
        }
    }

Ответы [ 3 ]

0 голосов
/ 14 марта 2020

Не уверен, зачем вам нужен запас для BottomSheetDialogFragment. Это DialogFragment, отображаемый поверх вашей Деятельности / Фрагмента. Добавление поля к нему ничего не изменит. Если вам нужны верхний отступ TextView (Test1) и нижний отступ TextView (Test2), тогда вы должны добавить padding_top к Test1 и padding_bottom к Test2, например:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_margin="16dp">

    <TextView
        android:id="@+id/alertdialog_fragmail_newmessage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Test 1"
        android:textStyle="bold"
        android:paddingTop="32dp"
        android:paddingStart="16dp"
        android:paddingEnd="16dp"
        android:paddingBottom="16dp"
        android:textColor="@color/colorBlackFont"
        android:layout_alignParentTop="true"
        android:gravity="center_vertical"
        android:drawablePadding="16dp"/>
</RelativeLayout>
0 голосов
/ 14 марта 2020

Немного хакерского решения:

Я обернул свой макет в другой RelativeLayout и сделал фон этого макета прозрачным.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@android:color/transparent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorWhite"
        android:layout_margin="16dp">

    <TextView
        android:id="@+id/alertdialog_fragmail_newmessage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Test 1"
        android:textStyle="bold"
        android:padding="16dp"
        android:textColor="@color/colorBlackFont"
        android:layout_alignParentTop="true"
        android:gravity="center_vertical"
        android:drawablePadding="16dp"
        android:background="?attr/selectableItemBackground"/>
    </RelativeLayout>
</RelativeLayout>

И в BottomSheetDialogFragment вам нужно переопределить setupDialog

@Override
    public void setupDialog(Dialog dialog, int style) {
        View contentView = View.inflate(getContext(), R.layout.alertdialog_layout_fragmailmore, null);
        dialog.setContentView(contentView);
        ((View) contentView.getParent()).setBackgroundColor(getResources().getColor(android.R.color.transparent));
    }

Кредит go этому лицу:

{ ссылка }

0 голосов
/ 14 марта 2020

Это можно решить двумя способами:

Первый Создайте еще один вложенный макет и добавьте поле в этот вложенный макет вместо root макета

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="16dp">

        <TextView
            android:id="@+id/alertdialog_fragmail_newmessage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:drawablePadding="16dp"
            android:gravity="center_vertical"
            android:padding="16dp"
            android:text="Test 1"
            android:textColor="@color/colorBlackFont"
            android:textStyle="bold" />

  <!--  More Views -->

</RelativeLayout>

Второй Добавьте поля в каждом отдельном представлении в макете root

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/alertdialog_fragmail_newmessage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_margin="16dp"
        android:drawablePadding="16dp"
        android:gravity="center_vertical"
        android:padding="16dp"
        android:text="Test 1"
        android:textColor="@color/colorBlackFont"
        android:textStyle="bold" />

  <!--  More Views -->

</RelativeLayout>
...