2016-09-14 5 views
0

немного новичок здесь. Я пытаюсь выровнять две кнопки действий по плаванию рядом друг с другом, но они немного перекрываются. Вероятно, необходим вид поля, я попытался с layout_marginRight = "85dp", но он не работает.Выровняйте две поплавковые кнопки рядом друг с другом

Скриншот

one

<android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/app_bar_height" 
     android:fitsSystemWindows="true" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/toolbar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/AppTheme.PopupOverlay" /> 

     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_user_profile" /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" 
     app:layout_anchor="@id/app_bar" 
     app:layout_anchorGravity="bottom|end" 
     android:src="@drawable/ic_chat_white_24dp" /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" 
     app:layout_anchor="@id/fab" 
     app:layout_anchorGravity="left|center" 
     android:src="@drawable/ic_person_add_white_24dp"/> 

</android.support.design.widget.CoordinatorLayout> 

Как заставить их правильно просмотра? Благодарю.

ответ

0

Я должен сказать, что это не очень хороший опыт, чтобы поместить два FloatingActionButton бок о бок. Обычно ставьте один FAB или пытайтесь добавить на него меню. Посмотрите это: https://github.com/Clans/FloatingActionButton

+0

Благодарим вас за ответ, вы правильно говорите, что это не лучший опыт пользовательского интерфейса, предложенный Google, и на самом деле библиотека Clans решает мою проблему, но на самом деле я предпочитаю показывать две кнопки бок о бок, потому что действия, предлагаемые пользователю, сразу видны, вместо того чтобы требовать от него щелчка по плюсу «+», чтобы обнаружить эти действия. Кроме того, с решением MrLys мне не нужно добавлять внешнюю библиотеку. Я ошибаюсь? –

+0

Хорошо, я протестировал другое решение и обнаружил, что две кнопки действий по плаванию бок о бок просто уродливы. Возможно, я добавлю кнопки на панели приложений в качестве пунктов меню. –

0

Самый лучший способ, что я мог бы найти, было инкапсулировать два Fab-фрагменты в RelativeLayout, например, так:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:layout_margin="20dp"> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:src="@drawable/ic_chat_white_24dp"/> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_marginRight="50dp" 
     android:src="@drawable/ic_person_add_white_24dp"/> 
</RelativeLayout> 

RelativeLayout будет иметь такую ​​же высоту, что и FABs, так вам не нужно думать о выравнивании по высоте. В FABs будет выровнена с правой стороны, из-за эту линию:

android:layout_alignParentEnd="true" 

Вы можете настроить значение Маржи в каждом макете, чтобы соответствовать вашим потребностям. Я думаю, что это должно ответить на ваш вопрос.

EDIT: Вышеуказанное не будет работать так, как вы планировали. Это будет:

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="85dp" 
    android:fitsSystemWindows="true" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/toolbar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 


</LinearLayout> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:layout_anchor="@id/app_bar" 
    app:layout_anchorGravity="bottom|right" 
    android:layout_margin="20dp"> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:src="@android:drawable/ic_person_add_white_24dp" 
    android:visibility="visible"/> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_marginRight="20dp" 
     android:src="@android:drawable/ic_person_add_white_24dp" /> 
</RelativeLayout> 

Объяснение

я теперь использовать

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="85dp" 
    android:fitsSystemWindows="true" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

в качестве якоря для RelativLayout, который содержит FABS.

Удалено android:layout_gravity="bottom" из RelativeLayout и заменено его app:layout_anchor="@id/app_bar" и app:layout_anchorGravity="bottom|right".

По-прежнему необходимо отрегулировать поля для ваших нужд. Также я добавил android:layout_height="85dp" в ваш AppBarLayout, потому что у меня не было android:layout_height="@dimen/app_bar_height". Просто замените это. Надеюсь, это поможет.

+0

Почему не горизонтальный linearLayout? – k0sh

+0

@ k0sh будет работать так, как предполагалось? Разве вы не должны были бы установить фиксированный запас, чтобы заставить их выравниваться вправо. 'android: layout_alignParentEnd =" true "' Не работает в LinearLayouts. Но мне интересно узнать, как это сработает, если вы уверены, что это так. – MrLys

+0

все, что вам нужно сделать, это установить силу тяжести = «конец» на линейной линии, и все должно быть хорошо, нет необходимости в каких-либо дополнительных материалах. – k0sh

Смежные вопросы