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

Posted

技术标签:

【中文标题】如何为我的 Android 应用程序创建页眉或页脚按钮栏【英文标题】:How do I create a header or footer button bar for my Android application 【发布时间】:2011-12-11 11:25:32 【问题描述】:

Google Maps、Facebook、Foursquare 等许多流行应用的大部分活动都有页眉和/或页脚栏。这些标题通常包含非常有用的按钮,并且 我想为我的应用创建一个。有谁知道他们是怎么做的?到目前为止我还没有找到任何东西。

以下是我的意思的一些图片: http://www.flickr.com/photos/calebgomer/6262815430 http://www.flickr.com/photos/calebgomer/6262815458

【问题讨论】:

【参考方案1】:

只需根据需要创建一个 xml。

使用您的其他屏幕 XML 中的标签将这些 XML 添加到您的其他屏幕。

Sample is here.

您可以在每个活动中根据需要处理按钮单击。

希望这会有所帮助。

【讨论】:

我以前在android上工作过。我有工作应用程序,我只是希望他们的 GUI 看起来更好。我会看看这些样本,看看我能做什么。谢谢! @Vinay 不要只提供链接,此链接已损坏。请更新您的链接。【参考方案2】:

设计带有页眉、页脚和正文的 XML 布局。每次都必须扩展主要活动,必须通过膨胀所需的布局来更改正文。

【讨论】:

【参考方案3】:

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

他们可能正在做这样的事情:

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

【讨论】:

使用 LinearLayout 页脚和使用 FrameLayout 作为页脚有区别吗? 框架布局不是页脚。它是框架布局的内容窗格。我已将答案编辑得更具体。 我明白你的意思。我将“body”从 LinearLayout 更改为 FrameLayout,但我没有看到两者之间的区别。在这种情况下使用 FrameLayout 有实际优势吗? 我不知道。我认为它们看起来更好。【参考方案4】:

使用这种方式,您可以创建您的 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_
    android:layout_ android:weightSum="10"
    android:id="@+id/commonlayout" android:background="#FFFFFF">
    <LinearLayout android:id="@+id/llheader"
        android:layout_ android:layout_
        android:background="@drawable/bar" android:layout_weight="1">



        <RelativeLayout android:id="@+id/relativeLayout1"
            android:layout_ android:layout_
            android:layout_gravity="center">
            <Button
                android:id="@+id/Button_HeaderFooterSubscribe"
                android:layout_
                android:layout_
                android:layout_alignParentRight="true"
                android:layout_marginRight="2dp"
                android:layout_centerVertical="true"
                android:background="@drawable/subscribe"
                />
                <Button
                android:id="@+id/Button_logout"
                android:layout_
                android:layout_
                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_
                android:layout_centerVertical="true"
                android:layout_
                android:layout_alignParentLeft="true"
                android:background="@drawable/tempadd"
                />



</RelativeLayout>

    </LinearLayout>
    <LinearLayout android:id="@+id/lldata"
        android:layout_weight="8" android:layout_
        android:layout_ android:background="#FFFFFF">


    </LinearLayout>

    <LinearLayout android:id="@+id/llfooter"
        android:layout_weight="1" android:layout_
        android:orientation="horizontal" android:layout_
        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_
            android:layout_ android:layout_weight="1"
            android:background="@drawable/home" android:textColor="#FFFFFF"
            android:padding="10px"></Button>

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

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

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

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

</LinearLayout>

然后创建一个 HeaderFooter.java Activity

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);
        

【讨论】:

这种方法效果很好,谢谢! (唯一的问题是页脚和屏幕底部之间的间隙很小) @CalebGomer 我已经更新了 xml 使用它,这个问题将得到解决..如果没有请告诉我 解决了!再次感谢您的帮助。 @MKJParekh 您能否添加一个示例代码,说明如何在标题中收听按钮点击?我有一个问题,我无法扩展活动并膨胀标题没有显示任何内容,我没有收到任何错误,有什么建议吗?谢谢 仅在 HeaderFooter 活动中,您可以编写按钮单击事件,该事件将自动扩展到其他类。在上面的代码中,我们在页眉页脚 xml 中膨胀数据部分。@Moe跨度>

以上是关于如何为我的 Android 应用程序创建页眉或页脚按钮栏的主要内容,如果未能解决你的问题,请参考以下文章

重新加载UICollectionView页眉或页脚?

html5:使用页眉或页脚标签两次?

如何为wordpress主题添加自定义页眉和页脚

如何从pdf文件中查找页眉页脚

我无法在 Monotouch UITableViewController 中禁用页眉或页脚

如何使用c ++自动化将页眉或页脚插入到Word文档中