Android:动态按钮的布局+ FAB + Appbar

时间:2018-01-31 17:57:20

标签: android layout android-linearlayout floating-action-button

我是Android(和Java)的新手,并且布局有困难。

当我点击FAB时,应该创建一个按钮。据我所知,当我想以编程方式添加按钮时,我必须使用LinearLayout。这通常有效,但是当我尝试将LinearLayout与FAB和appbar结合使用时,新显示的按钮未显示或FAB或appbar。

其中一个布局总是隐藏其他一些元素。看起来应该是这样的:

  1. Appbar

  2. LinearLayout - 带滚动条的按钮

  3. 右下角的FAB

  4. 我尝试过RelativeLayout,FrameLayout,CoordinatorLayout等,没有运气。

    activity_main.xml中     

    <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"
        tools:context="xyz.mypackage.MainActivity">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/main_layout">
    
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
    
    </android.support.design.widget.AppBarLayout>
    
    </LinearLayout>
    
    <!--include layout="@layout/content_main" /-->
    
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:visibility="visible"
        app:srcCompat="@android:drawable/ic_input_add" />
    
    </android.support.design.widget.CoordinatorLayout>
    

2 个答案:

答案 0 :(得分:0)

在xml中创建按钮并将可见性设置为已消失。 Fab点击触发dialogfragment,输入你可以包含EditText。

EditText editText = (EditText) getDialog().findViewById(R.id.project_name);
if (editText != null) {
    Log.e("Value", editText.getText().toString());
    button.setText(editText.getText().toString());
    button.setVisibility(View.VISIBLE);
} else {
    Log.e("", "EditText not found!");
}

如何从DialogFragment中的EditText获取文本?

getText from a EditText in a DialogFragment

答案 1 :(得分:0)

阅读文档后(是的,我应该在发布问题之前完成),我找到了一种方法:

以root身份使用RelativeLayout,然后对于appbar和按钮使用LinearLayout作为子项(我还添加了一个ScrollView和另一个LinearLayout)。 FAB应位于根(RelativeLayout)内,并具有以下属性:

android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"