Ich möchte die Position von Floating-Aktion-Schaltfläche programmgesteuert an einer bestimmten Stelle in einem Fragment verschieben, da manchmal die Floating-Aktion den wichtigen Inhalt dieses Fragments abdeckt. Ich habe die Referenz der schwebenden Aktionsschaltfläche in der Aktivität und speicherte sie in einer statischen Variable. Ich versuche, die Schwerkraft in der onResume-Methode des Fragments zu ändern. Wie Sie in dem Bild sehen können, dass fab die y-Achse abdeckt, möchte ich es zum Ende bewegen. Image for the reference.Android: Wie setzt man die Schwerkraft von Floating Action Button programmatisch?
Der Code in der onResume Methode des Fragments (nicht funktioniert):
override fun onResume() {
super.onResume()
val params : CoordinatorLayout.LayoutParams = BaseActivity.fab!!.layoutParams as CoordinatorLayout.LayoutParams
params.anchorGravity = GravityCompat.END
BaseActivity.fab!!.layoutParams = params
}
XML-Datei der Haupttätigkeit
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.mandar.hackerthon_app.Activities.BaseActivity"
tools:showIn="@layout/app_bar_base">
<FrameLayout
android:id="@+id/frameBaseFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:scaleType="center"
android:elevation="10dp"
app:backgroundTint="@color/common_google_signin_btn_text_dark_default"
app:srcCompat="@mipmap/ic_connection_on_round" />
</android.support.design.widget.CoordinatorLayout>
Versuchen Sie 'View # requestLayout' aufzurufen, nachdem Sie die Layoutparameter festgelegt haben. – kernelmaster