Элемент исчезает после установки полей на RelativeLayout

Я разрабатываю небольшое приложение как проект для школы, и мне нужно динамически перемещать FAB. У меня есть FloatingActionButton внутри Относительного макета, который на самом деле выровнен снизу и выровнен по горизонтали.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.pagiaro.nicola.quiz2_0.HomeActivity"
    android:id="@+id/home_rl" >

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="true"
        app:fabSize="normal"
        app:srcCompat="@drawable/ic_quiz"
        android:id="@+id/fab_inizia"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_marginBottom="@dimen/activity_vertical_margin"
        app:backgroundTint="@color/accentColor" />

</RelativeLayout>

Код, который я использую для перемещения это:

   final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_inizia);

   final RelativeLayout.LayoutParams rlp_keyboard_is_open = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);

    rlp_keyboard_is_open.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    rlp_keyboard_is_open.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

    fab.setLayoutParams(rlp_keyboard_is_open);

Но с этим кодом у моего FAB нет правого и нижнего поля. Проблема возникает, когда я добавляю код для добавления полей.

    rlp_keyboard_is_open.setMargins(0, 0, R.dimen.activity_horizontal_margin, R.dimen.activity_vertical_margin);

или же

    rlp_keyboard_is_open.rightMargin = R.dimen.activity_horizontal_margin;
    rlp_keyboard_is_open.bottonMargin = R.dimen.activity_vertical_margin;

Если я добавлю этот код, FAB исчезнет. Я много искал решение, но не нашел. Любая помощь? Благодарю.

1 ответ

Решение

Использование

getResources().getDimension(R.dimen.activity_horizontal_margin)

или же

getResources().getDimensionPixelSize(R.dimen.activity_horizontal_margin)

вместо непосредственного использования R.dimen.activity_horizontal_margin так как он возвращает внутренний идентификатор, присвоенный R.dimen.activity_horizontal_margin а не значение, которое вы присвоили в своем XML-файле.

Другие вопросы по тегам