我正在使用Preferences-API
创建“设置”屏幕。
截至目前,我的SettingsActivity
布局XML包含一个简单的LinearLayout
,其中包含一个FrameLayout
,我正使用它包含我的Preferences
片段。
但是,由于用户访问“设置”屏幕的方式,AppBar中没有“后退”按钮-因此,我想在底部显示一个ButtonBar
“首选项”屏幕上的,因此他们可以单击cancel
或ok
按钮。
以下是我到目前为止尝试添加的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
。
但是,我知道这不是我应该怎么做。
有人可以帮忙解释一下我应该怎么做吗?
谢谢!
答案 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>