使用FrameLayout对AppBarLayout进行着色和重叠

时间:2017-03-27 18:54:19

标签: android android-layout popupwindow android-appbarlayout

我为我的毕业考试做了一个应用程序。 我有一个框架布局,黑色背景,60%alpha(遮住它下面的所有东西)。我希望框架布局与应用栏布局和浮动按钮重叠 我发现的唯一其他类似问题是this one,但它并没有对我的项目起作用,因为只要我理解,他只想重叠一个FrameLayout。

这是带浮动按钮的AppBarLayout:

<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"/>

        <RelativeLayout
            android:id="@+id/header"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:elevation="4dp">

            [...]

        </RelativeLayout>
</android.support.design.widget.AppBarLayout>

<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"
        app:srcCompat="@drawable/ic_add_white" />

在上面的相对布局中,我需要一些文字。

这是FrameLayout:

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/blackBackground"
        android:id="@+id/addJobFrame"
        android:visibility="visible"
        app:behavior_overlapTop="100dp">

        [...]

</FrameLayout>

请注意,一切都在CoordinatorLayout内。

我想要获得的效果是this picture右侧的效果,事实上在框架布局中我包含了外部xml布局。

作为替代方案,你知道其他方法吗?

1 个答案:

答案 0 :(得分:0)

根据您附加的图片,似乎是自定义AlartDialog

创建自定义对话框:

  1. 为自定义对话框设计自定义布局XML dialog_layout.xml
  2. 使用AlertDialog方法将此自定义布局设置为AlertDialog.Builder.setView()
  3. 这是一个完整的例子:

    <强> dialog_layout.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <EditText
            android:id="@+id/editText_dateStart"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/colorPrimaryDark"
            android:textColorHint="@color/colorPrimary"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:padding="20dp"
            android:hint="Start Date"
            android:inputType="date" />
    
        <EditText
            android:id="@+id/editText_dateEnd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/colorPrimaryDark"
            android:textColorHint="@color/colorPrimary"
            android:layout_below="@id/editText_dateStart"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:padding="20dp"
            android:hint="End Date"
            android:inputType="date" />
    
        <Button
            android:id="@+id/button_ok"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginBottom="15dp"
            android:text="ACCETTO"
            android:textColor="#ffffff"
            android:background="#34ff00"
            android:layout_below="@id/editText_dateEnd"
            android:layout_alignParentRight="true"/>
    
    </RelativeLayout>
    

    <强> YourActivity.java

        AlertDialog.Builder dialogBuilder;
        AlertDialog dialog;
    
        LayoutInflater inflater = activity.getLayoutInflater();
        View dialogLayout = inflater.inflate(R.layout.dialog_layout, null);
    
        // Views
        Button button = (Button) dialogLayout.findViewById(R.id.button_ok);
    
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
    
                    // Do something
                }
            });
    
        dialogBuilder = new AlertDialog.Builder(activity);
        dialogBuilder.setView(dialogLayout);
    
        dialog = dialogBuilder.create();
        dialog.show();