设置活动由操作栏重叠

时间:2018-06-15 17:40:00

标签: android

我正在开发Android项目,并且我已经从Android创建了一个新的设置活动。当我创建活动并尝试运行时,Android Studio创建的设置活动由于某种原因没有包含操作栏。我用Google搜索,发现它似乎是一种常见的事情,并手动添加操作栏,所以我做了以下事情:

 private void setupActionBar()
    {
        getLayoutInflater().inflate(R.layout.toolbar, (ViewGroup)findViewById(android.R.id.content));
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null)
        {
            // Show the Up button in the action bar.
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }

我发现第一个首选项标题隐藏在操作栏下,再次用Google搜索,发现你需要在列表视图中添加填充,我在onCreate()

中使用了以下内容
getListView().setPadding(0, 180, 0, 0);

执行上述操作似乎有点奇怪,它只能在初始设置活动屏幕上使用首选项标题列表。单击首选项标题以查看设置后,第一个设置将隐藏在操作栏下,如下面的屏幕截图所示:

view of settings hiding under action bar

2 个答案:

答案 0 :(得分:1)

我想我明白了。

我创建了一个工具栏XML,如下所示

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/settings_toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

然后在setupActionBar方法的SettingsActivity中,如下所示:

private void setupActionBar()
    {
        ViewGroup rootView = (ViewGroup)findViewById(R.id.action_bar_root);
        View view = getLayoutInflater().inflate(R.layout.settings_toolbar, rootView, false);
        rootView.addView(view, 0);

        Toolbar toolbar = (Toolbar)findViewById(R.id.settings_toolbar);
        setSupportActionBar(toolbar);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            // Show the Up button in the action bar.
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }

答案 1 :(得分:0)

我建议您删除操作栏并制作一个自定义工具栏,该工具栏将由其他布局文件描述,并包含取消当前活动的窗口小部件。

例如:

  <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/relLayout1">

        <include layout="@layout/snippet_comments_toolbar"/>

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/relLayout2"
        android:layout_below="@+id/relLayout1"
        android:layout_marginBottom="60dp">

        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/listView"></ListView>


    </RelativeLayout>

然后是snippet_comments_toolbar,这是我正在谈论的工具栏:

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    >

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@drawable/white_grey_border_bottom"
        >

        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/profileToolBar">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <ImageView
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_marginEnd="20dp"
                    android:layout_centerVertical="true"
                    android:id="@+id/backArrow"
                    android:src="@drawable/ic_backarrow"/>


                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Comments"
                    android:layout_toRightOf="@+id/backArrow"
                    android:layout_marginRight="15dp"
                    android:textSize="20sp"
                    android:textColor="@color/black"
                    android:layout_centerVertical="true"
                    android:id="@+id/tvNext"
                    />




            </RelativeLayout>


        </android.support.v7.widget.Toolbar>



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

</merge>