我想创建一个在页面底部有 5 个按钮的应用程序,当用户单击任何按钮时,页面会发生变化,但 5 个按钮仍保留在页面底部。现在我创建了这个程序,但是当我在其他类中调用 setContentView() 时,因为我调用了其他布局,按钮被删除。有办法保留5个按钮吗?或者我应该在 5layout 中再次创建 5buttons?
谢谢干杯
最简单的方法是在所有布局文件中制作一个包含 5 个按钮的布局示例
<include layout="@layout/titlebar"/>
或者另一种方法是使用片段,这样只有片段有变化,保持其他布局内容相同
编辑
或使用<merge>
标签
当<merge />
在另一个布局中包含一个布局时,标签有助于消除视图层次结构中的冗余视图组。例如,如果您的主布局是一个垂直的 LinearLayout,其中两个连续的视图可以在多个布局中重复使用,那么放置两个视图的可重复使用的布局需要它自己的根视图。但是,使用另一个 LinearLayout 作为可重用布局的根会导致在垂直 LinearLayout 中出现垂直 LinearLayout。除了降低 UI 性能之外,嵌套的 LinearLayout 没有任何实际用途。
为了避免包含这样一个冗余的视图组,您可以使用该元素作为可重用布局的根视图。例如:
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/delete"/>
</merge>
现在,当您将此布局包含在另一个布局中(使用标签)时,系统会忽略该元素并将两个按钮直接放置在布局中,以代替标签。
请通过此链接获取有关重用布局的更多信息
感谢您的回答。我阅读了开发人员链接,并将合并和包含标记添加到 xml 文件,但程序有错误。为什么?
MainActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<include layout="@layout/location"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/background"
android:gravity="bottom"
android:orientation="horizontal" >
<Button
android:id="@+id/button_home"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/home_icon"
android:text="@string/button_home"
android:textColor="@color/text_home" />
<Button
android:id="@+id/button_product"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/product_icon"
android:onClick="Product"
android:text="@string/button_product"
android:textColor="@color/text_product" />
<Button
android:id="@+id/button_places"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/places_icon"
android:onClick="Places"
android:text="@string/button_places"
android:textColor="@color/text_places" />
<Button
android:id="@+id/button_rewards"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/rewards_icon"
android:onClick="Rewards"
android:text="@string/button_rewards"
android:textColor="@color/text_rewards" />
<Button
android:id="@+id/button_more"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/more_icon"
android:onClick="More"
android:text="@string/button_more"
android:textColor="@color/text_more" />
</LinearLayout>
</LinearLayout>
位置.xml
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView>
<com.google.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:apiKey="0cPRv243zM1_S3ydsNg8MJP9_6BfCp642jOhPvQ"/>
<LinearLayout
android:id="@+id/zoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"/>
</LinearLayout>
</merge>
什么是不正确的?谢谢
据我所知,我认为您正在寻找标签而不是按钮。看看这个。