Android:浮动动作按钮的定位不可预测

时间:2017-07-10 07:57:21

标签: android xamarin.android floating-action-button

我的一些浮动操作按钮不会保留在我想要的位置,我无法理解原因。 enter image description here 第一个是他们应该如何(实际上有时它是有效的),另外两个图像显示他们有时表现如何......我找不到"模式"在这种行为中。

这是布局(只有一半):

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/lay_attivita_edit_ubicazioni"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingLeft="@dimen/list_padding_lateral"
        android:paddingRight="@dimen/list_padding_lateral">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="vertical"
            android:id="@+id/container_attivita_edit_origini">
            <TextView
                style="@style/FieldLabel"
                android:layout_marginTop="20dp"
                android:text="@string/attivita_edit_origini" />
            <ListView
                style="@style/ListView"
                android:id="@+id/list_attivita_edit_origini"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scrollbars="vertical"
                android:fadeScrollbars="false"
                android:background="@drawable/border_rectangle" />
        </LinearLayout>
    </LinearLayout>

    <android.support.design.widget.FloatingActionButton
        style="@style/FloatingActionButton.Small"
        android:id="@+id/fab_attivita_edit_ubicazioni_edit_origini"
        app:layout_anchor="@id/list_attivita_edit_origini"
        app:layout_anchorGravity="top|right|end" />
</android.support.design.widget.CoordinatorLayout>

我还尝试以编程方式查看anchoranchorGravity,但结果是一样的。可能会发生这种情况,因为根据某些逻辑,如果我在OnCreateView的末尾使它们不可见,则无法看到这两个部分中的一部分。

它并不依赖于&#34;锚列表的可见性&#34;因为即使我总是让两个列表都可见,工厂也会移动。 我还尝试在每次更改它们或它们的列表的可见性时,以编程方式更改fab的anchor和anchorId。

CoordinatorLayout.LayoutParams editOrigineFabParams = (CoordinatorLayout.LayoutParams)editOrigineFab.LayoutParameters;
editOrigineFabParams.AnchorId = Resource.Id.list_attivita_edit_origini;
editOrigineFabParams.AnchorGravity = (int)(GravityFlags.Top | GravityFlags.Right | GravityFlags.End);
editOrigineFab.LayoutParameters = editOrigineFabParams;

使用相同的条件/代码有时他们会工作,有时他们不会。它看起来像Android中的一个错误。我尝试使用Android 7.0和7.1,Xamarin.Android.Support.Compat.25.3.1。 任何有类似问题或者想知道可能是什么原因的人?

2 个答案:

答案 0 :(得分:1)

james montemagno使用FAB。

将james montemagno中的FAB从nuget添加到您的项目中。 https://www.nuget.org/packages/Refractored.FloatingActionButton/

<Refractored.Fab.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:src="@drawable/ic_action_content_new"
        app:app_colorNormal="@color/primary"
        app:app_colorPressed="@color/primary_pressed"
        app:app_colorRipple="@color/ripple" />

enter image description here

答案 1 :(得分:0)

使用layout_gravity进行定位。

<android.support.design.widget.FloatingActionButton
   android:id="@+id/fab"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="bottom|right"
   android:src="@drawable/ic_edit"
   android:layout_marginRight="15dp"
   android:layout_marginBottom="15dp" / >