繁体   English   中英

将AppBarLayout着色并与FrameLayout重叠

[英]Shade and overlap AppBarLayout with FrameLayout

我正在为毕业考试制作一个应用程序。 我的框架布局具有黑色背景和60%的alpha(以遮盖其下方的所有内容)。 我希望框架布局与应用栏布局和浮动按钮重叠。
我发现的唯一其他类似问题是这个问题,但是它在我的项目中不起作用,因为据我了解,他只想覆盖一个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内部。

我想要获得的效果是这张图片的右边,实际上在框架布局中我已经包含了一个外部xml布局。

或者,您知道其他方法吗?

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

创建自定义对话框:

  1. 为您的自定义对话框设计一个自定义布局XML dialog_layout.xml
  2. 使用AlertDialog.Builder.setView()方法将此自定义布局设置为AlertDialog

这是一个完整的示例:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM