将FloatingActionButton以编程方式放置在CoordinatorLayout的中心

时间:2017-04-14 11:03:23

标签: android

有一个CoordinatorLayout

<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/cl_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</android.support.design.widget.CoordinatorLayout>

问题:如何在屏幕中心以编程方式创建和定位FloatingActionButton

重要提示:FloatingActionButton仅以编程方式创建(无需在XML文件中将答案发布到您的位置)。

5 个答案:

答案 0 :(得分:4)

由于没有一个答案有效,经过一些实验,解决方案是:

((CoordinatorLayout.LayoutParams) fab.getLayoutParams()).gravity = Gravity.CENTER;

答案 1 :(得分:0)

使用此

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
lp.anchorGravity = Gravity.CENTER // or you can add Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL
fab.setLayoutParams(lp);

答案 2 :(得分:0)

试试这个:)

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ncrypted.floatingactionbuttoncenter.MainActivity">


<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

public class MainActivity extends AppCompatActivity {
FloatingActionButton fab;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fab = (FloatingActionButton) findViewById(R.id.fab);

    CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
    lp.gravity = Gravity.CENTER;
    fab.setLayoutParams(lp);


}

}

在我的情况下有效:)

答案 3 :(得分:0)

我创建了一个FAB并以编程方式添加它。 这是我使用上面提供的用于设置重力的代码示例运行我的应用程序时获得的。 这些答案无效

java.lang.NullPointerException: Attempt to write to field 'int android.support.design.widget.CoordinatorLayout$LayoutParams.gravity' on a null object reference

答案 4 :(得分:-2)

我想你会在这里找到答案。

Set layout_anchor at runtime on FloatingActionButton

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);  
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) 
params.setAnchorId(View.NO_ID);
fab.getLayoutParams();
fab.setLayoutParams(params);