WedX - журнал о программировании и компьютерных науках

BottomAppBar игнорирует layout_gravity, всегда отображается вверху

Я пытаюсь внедрить BottomAppBar в свое приложение и не могу отобразить FAB или BottomAppBar внизу. Вот мой макет:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".dashboard.DashboardActivity">

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_add_white_24dp"
    app:layout_anchor="@id/bottom_bar"/>

<android.support.design.bottomappbar.BottomAppBar
    android:id="@+id/bottom_bar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/mtrl_bottomappbar_height"
    android:layout_gravity="bottom"
    app:backgroundTint="@color/colorPrimary"
    app:fabAttached="true"
    app:fabCradleVerticalOffset="12dp"
    app:fabAlignmentMode="center"/>

</android.support.constraint.ConstraintLayout>

Однако вот что отображается в эмуляторе:

Изображение

Как выровнять по низу?


  • Сработал ли какой-либо ответ для вас? Вы должны принять его, если он сработал. 24.06.2018

Ответы:


1

ConstraintLayout не использует layout_gravity. Вместо этого используйте:

app:layout_constraintBottom_toBottomOf="parent" 

без маржи.

24.06.2018
  • Спасибо, вместо этого я фактически обернул свои FAB и BottomAppBar в CoordinatorLayout. Использование вашего фрагмента работало для BottomAppBar, но FAB не прикреплял все, что я пробовал. 24.06.2018

  • 2

    Во-первых, измените макет на LinearLayout и определите в нем ориентацию как вертикальную, а затем поместите свой код в другой LinearLayout, в котором вы можете сделать его marginTop, поскольку ваши требования просто вносят эти изменения, он должен работать нормально

    <LinearLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".dashboard.DashboardActivity"
    android:orientation="vertical"
    

    >

    <LinearLayout
       android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_marginTop="330dp" //mark height accordingly
     >
    
    
      \\put your code here
    
    
    
    </LinearLayout>
    
    
    </LinearLayout>
    

    попробуйте это должно работать нормально для вас

    24.06.2018
  • не публикуйте блок кода в качестве ответа без объяснения того, что вы изменили и почему. Это довольно бесполезно из образовательного PoV 24.06.2018
  • Да, извини, чувак, я действительно не хочу использовать LinearLayout в качестве корневого макета... 24.06.2018

  • 3

    Иногда это зависит и от вашего корневого макета.
    для ConstraintLayout попробуйте app:layout_constraintBottom_toBottomOf="parent"

    Проверьте этот ответ и для других макетов.

    23.06.2018
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]