Android-在SettingsActivity屏幕底部包含ButtonBar吗?

时间:2019-02-16 20:57:35

标签: android android-fragments android-preferences

我正在使用Preferences-API创建“设置”屏幕。
截至目前,我的SettingsActivity布局XML包含一个简单的LinearLayout,其中包含一个FrameLayout,我正使用它包含我的Preferences片段。

但是,由于用户访问“设置”屏幕的方式,AppBar中没有“后退”按钮-因此,我想在底部显示一个ButtonBar “首选项”屏幕上的,因此他们可以单击cancelok按钮。

以下是我到目前为止尝试添加的ButtonBar:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SettingsActivity">

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<LinearLayout
    style="?android:attr/buttonBarStyle"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button style="?android:attr/buttonBarButtonStyle"
        android:id="@+id/btn_settingsActivity_cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@android:string/cancel" />

    <Button style="?android:attr/buttonBarButtonStyle"
        android:id="@+id/btn_settingsActivity_ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@android:string/ok" />

</LinearLayout>
</LinearLayout>

有人知道我在做什么错吗?
使用上面的代码,FrameLayout仍然占据整个屏幕。
如果我给FrameLayout指定一个特定的height,则可以看到ButtonBar
但是,我知道这不是我应该怎么做。

有人可以帮忙解释一下我应该怎么做吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

首先在孩子的LinerLayout中添加一些方向,例如android:orientation="horizontal",然后将高度更改为wrap_content

<LinearLayout
        style="?android:attr/buttonBarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">..

第二次告诉您的FrameLayout您想通过权重属性(例如, android:layout_weight="1"并出于性能目的将高度设置为零android:layout_height="0dp"

<FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

最终代码应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <LinearLayout
        style="?android:attr/buttonBarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_settingsActivity_cancel"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@android:string/cancel" />

        <Button
            android:id="@+id/btn_settingsActivity_ok"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@android:string/ok" />

    </LinearLayout>
</LinearLayout>