浮动操作按钮没有正确显示

时间:2018-05-09 11:56:41

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

floating action button内的Fragment内有TabLayout

当页面加载时,按钮保持如下:

enter image description here

点击" Quilometragem final"字段,键盘显示,然后我的按钮保持在正确的位置:

enter image description here

如何解决这个问题,以便在页面加载时将floating action button显示在正确的位置?

这是我的布局&x; xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true">
  <android.support.design.widget.CoordinatorLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="@dimen/common_margin"
        android:layout_marginRight="@dimen/common_margin">

      <!-- another fields -->

      <!-- KM FINAL -->
      <LinearLayout
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginTop="10dp">
        <TextView
            android:text="@string/end_exam_mileage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:textSize="25sp"
            android:fontFamily="sans-serif-condensed"
            android:textColor="@color/primary" />
        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
          <EditText
              android:id="@+id/txtFinalKM"
              android:fontFamily="sans-serif-condensed"
              android:inputType="number"
              android:hint="@string/end_exam_insert_mileage"
              android:textSize="25sp"
              android:layout_width="match_parent"
              android:layout_height="wrap_content" />
        </android.support.design.widget.TextInputLayout>
      </LinearLayout>
    </LinearLayout>
          <!-- NEXT BUTTON -->
        <com.github.clans.fab.FloatingActionButton
            android:id="@+id/fab_next_information"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_marginRight="@dimen/common_margin"
            android:layout_marginBottom="@dimen/common_margin"
            android:src="@drawable/icon_fab_mini_next"
            android:clickable="true"
            app:fab_shadowColor="#00FFFFFF"
            app:fab_colorNormal="#272B35"
            app:fab_colorPressed="@color/accent"
            app:fab_colorRipple="#272B35" />
  </android.support.design.widget.CoordinatorLayout>
</LinearLayout>

3 个答案:

答案 0 :(得分:2)

将重力更改为底部|右侧

<com.github.clans.fab.FloatingActionButton
            android:id="@+id/fab_next_information"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_marginRight="@dimen/common_margin"
            android:layout_marginBottom="@dimen/common_margin"
            android:src="@drawable/icon_fab_mini_next"
            android:clickable="true"
            app:fab_shadowColor="#00FFFFFF"
            app:fab_colorNormal="#272B35"
            app:fab_colorPressed="@color/accent"
            app:fab_colorRipple="#272B35" />

同样在您的父布局中,您可以添加

android:clipChildren="false"
android:clipToPadding="false"

防止剪辑

答案 1 :(得分:2)

感谢Aswin P Ashok的评论,我能够解决这个 bug 阅读this

解决方案是在OnCreateView中的Fragment内添加以下代码:

_linearLayout.Post(new Runnable(() =>
{
    _linearLayout.RequestLayout();
}));

为什么会这样?

正如here所述,

  

发布requestLayout()是有效的,因为依赖图是在onMeasure()方法中构建的   CoordinatorLayout。在构建图表一次后,   为每个孩子调用了findAnchorView()方法。在下一个传球   在onMeasure()中构建图形时,方法dependsOn()返回   正确的结果(除非添加了一些新的观点,否则它们不会   工作)并且图表正确构建。它必须在post()中调用,   因为在上一个度量/布局之前调用requestLayout()   传球开始不会导致新传球。

答案 2 :(得分:1)

试试这个

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:orientation="vertical">


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:orientation="vertical">

            <!-- another fields -->

            <!-- KM FINAL -->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:orientation="vertical">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="sans-serif-condensed"
                    android:text="end_exam_mileage"
                    android:textSize="25sp"
                    android:textStyle="bold" />

                <android.support.design.widget.TextInputLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <EditText
                        android:id="@+id/txtFinalKM"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:fontFamily="sans-serif-condensed"
                        android:hint="end_exam_insert_mileage"
                        android:inputType="number"
                        android:textSize="25sp" />
                </android.support.design.widget.TextInputLayout>
            </LinearLayout>
        </LinearLayout>

        <com.github.clans.fab.FloatingActionButton
            android:id="@+id/fab_next_information"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:clickable="true"
            android:src="@drawable/ic_message"
            app:fab_colorNormal="#272B35"
            app:fab_colorPressed="@color/accent"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_margin="20dp"
            app:fab_colorRipple="#272B35"
            app:fab_shadowColor="#00FFFFFF" />


</RelativeLayout>

enter image description here