如何为我的Android应用程序创建标题或页脚按钮栏

12
4个回答

15

通过这种方式,您可以创建自己的header-footer xml并将其用于任何activity中,同时您只需要在HeaderFooter.java中一次编写控件的代码即可,并且可以在项目中访问它。

构建您的HederFooter.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:weightSum="10"
    android:id="@+id/commonlayout" android:background="#FFFFFF">
    <LinearLayout android:id="@+id/llheader"
        android:layout_width="fill_parent" android:layout_height="0dp"
        android:background="@drawable/bar" android:layout_weight="1">



        <RelativeLayout android:id="@+id/relativeLayout1"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:layout_gravity="center">
            <Button
                android:id="@+id/Button_HeaderFooterSubscribe"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_marginRight="2dp"
                android:layout_centerVertical="true"
                android:background="@drawable/subscribe"
                />
                <Button
                android:id="@+id/Button_logout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_marginRight="2dp"
                android:layout_centerVertical="true"
                android:background="@drawable/logout"
                />
                <Button
                android:id="@+id/Button_playlist"
                android:layout_marginLeft="2dp"
                android:layout_width="wrap_content"
                android:layout_centerVertical="true"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:background="@drawable/tempadd"
                />



</RelativeLayout>

    </LinearLayout>
    <LinearLayout android:id="@+id/lldata"
        android:layout_weight="8" android:layout_width="fill_parent"
        android:layout_height="0dp" android:background="#FFFFFF">


    </LinearLayout>

    <LinearLayout android:id="@+id/llfooter"
        android:layout_weight="1" android:layout_width="fill_parent"
        android:orientation="horizontal" android:layout_height="0dp"
        android:visibility="visible" android:background="@drawable/fbg"
        android:weightSum="5.0" android:gravity="center"
        android:layout_margin="0dp">

        <Button android:id="@+id/home" android:layout_height="wrap_content"
            android:layout_width="wrap_content" android:layout_weight="1"
            android:background="@drawable/home" android:textColor="#FFFFFF"
            android:padding="10px"></Button>

        <Button android:id="@+id/issue" android:layout_height="wrap_content"
            android:layout_width="wrap_content" android:layout_weight="1"
            android:background="@drawable/issue" android:textColor="#FFFFFF"
            android:padding="10px"></Button>

        <Button android:id="@+id/browse" android:layout_height="wrap_content"
            android:layout_width="wrap_content" android:layout_weight="1"
            android:background="@drawable/browse" android:textColor="#FFFFFF"
            android:padding="10px"></Button>

        <Button android:id="@+id/search" android:layout_height="wrap_content"
            android:layout_width="wrap_content" android:layout_weight="1"
            android:background="@drawable/search" android:textColor="#FFFFFF"
            android:padding="10px"></Button>

        <Button android:layout_height="wrap_content" android:id="@+id/favorite"
            android:background="@drawable/favorite" android:layout_width="wrap_content"
            android:layout_weight="1"
            android:textColor="#FFFFFF" android:padding="10px"></Button>
    </LinearLayout>

</LinearLayout>

然后创建一个HeaderFooter.java活动

public class HeaderFooter extends Activity {
        public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.headerfooter);
        }
 }

现在将上述活动扩展到您的所有其他活动,并在headerfooter.xml的中间布局中填充您特定的视图。

public class Home extends HeaderFooter 
{
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            ViewGroup vg = (ViewGroup) findViewById(R.id.lldata);
            ViewGroup.inflate(Home.this, R.layout.home, vg);
        }
}

1
这种方法非常有效,谢谢!(唯一的问题是页脚与屏幕底部之间有一个非常小的间隙) - Caleb Gomer
@CalebGomer 我已经更新了XML,请使用它,问题就会解决。如果还有问题请告诉我。 - MKJParekh
@MKJParekh,您能否提供一个示例代码,演示如何监听标题栏中的按钮点击事件?我遇到了一个问题,无法扩展活动并填充标题栏,什么都没有显示,也没有出现错误,您有什么建议吗?谢谢。 - Moe
只有在HeaderFooter活动中,您才能编写按钮单击事件,并且该事件将自动扩展到其他类中。 在上面的代码中,我们正在将数据部分填充到页眉页脚XML中。 @Moe - MKJParekh
这是一个好的技巧。但是我对上述方法有一个困惑。我不需要在清单文件中添加HeaderFooter。有人知道为什么吗? - Chintan
@Chintan 我听不懂你的意思.. 可以在这里分享一下你的困惑吗 http://chat.stackoverflow.com/rooms/1531/casual-chat - MKJParekh

2

根据需要创建一个xml文件。

使用<include>标签,将这些xml文件添加到您的其他屏幕的XML文件中。

示例在此处

您可以在每个活动中按需处理按钮点击事件。

希望这可以帮助您。


我之前在Android上工作过。我有一些工作中的应用程序,只是希望它们的图形用户界面看起来更好一些。我会查看这些示例并看看我能做些什么。谢谢! - Caleb Gomer
@Vinay 不要只给链接,这个链接已经失效了。请更新你的链接。 - BBdev

0

我认为你喜欢这些布局的元素是它们在显示屏下部使用了FrameLayout。

他们可能做了类似于这样的事情:

<LinearLayout android:orientation="vertical
  .../>
 <head layout element>
 <FrameLayout element>
 <footer layout element>
</LinearLayout>

使用LinearLayout作为页脚和使用FrameLayout作为页脚有什么区别吗? - Caleb Gomer
不是页脚是FrameLayout,而是内容窗格是FrameLayout。我已经编辑了我的答案以更具体地说明。 - Kurtis Nusbaum
我明白你的意思。我把"body"从LinearLayout改成FrameLayout,但是我没看出两者之间有什么区别。在这种情况下使用FrameLayout是否有实际优势? - Caleb Gomer
据我所知,没有这样的情况。我认为它们只是看起来更好看一些。 - Kurtis Nusbaum

0

设计包含头部、底部和主体的 Xml 布局。您每次都必须扩展主活动,并通过填充所需的布局来更改主体。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接