有办法在所有页面中保留以前的布局吗?

时间:2012-10-31 12:24:23

标签: android layout button

我想在用户点击时创建一个在页面底部有5个按钮的应用程序 在任何按钮上,页面将发生变化,但页面底部仍保留5个按钮。现在我创造 这个程序但是当我在其他类中调用setContentView()时,我调用其他布局, 按钮已删除。有办法保留5个按钮?或者我应该在5layout中再次创建5个按钮?

由于 干杯

3 个答案:

答案 0 :(得分:1)

最简单的方法是在所有布局文件中制作一个有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>

现在,当您将此布局包含在另一个布局中时(使用标记),系统会忽略该元素并将两个按钮直接放在布局中,而不是标记。

请浏览this链接以获取有关重复使用布局的详细信息

答案 1 :(得分:0)

从我可以收集的内容来看,我认为你正在寻找标签而不是按钮。看看this

答案 2 :(得分:0)

谢谢你的回答。我阅读开发人员链接,我添加合并并包含标签到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>

location.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> 

什么是不正确的? 谢谢