我floating action button
内的Fragment
内有TabLayout
。
当页面加载时,按钮保持如下:
点击" Quilometragem final"字段,键盘显示,然后我的按钮保持在正确的位置:
如何解决这个问题,以便在页面加载时将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>
答案 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>