Android:如何在应用程序标题中添加按钮?

5
4个回答

16

我认为最简单的方法是去掉标准的标题栏 (android:theme="@android:style/Theme.NoTitleBar" 在清单文件中的 <activity> 元素中),并在活动顶部放置自己的“标题栏”。

请注意,“标题栏中的按钮”样式更像 iPhone。Android 通常会将其放在选项菜单中,这样 UI 更少混乱(代价是需要点击两次来进行刷新操作)。


6
有趣的是,Android现在提倡包含常用操作的一致性标题栏和按钮。例如,可以查看Google I/O 2010应用程序和Twitter UI设计模式博客文章:http://android-developers.blogspot.com/2010/05/twitter-for-android-closer-look-at.html - Christopher Orr

3

为什么不尝试这个呢?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final boolean customTitle= requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

    setContentView(R.layout.main);

    if ( customTitle ) {
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, Set your layout for title here and mention your button in this layout);
    }

    final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
    if ( myTitleText != null ) {
        myTitleText.setText("NEW TITLE");
        myTitleText.setBackgroundColor(Color.BLUE);
    }
}

3

是的,这解决了我遇到的一个问题...以下是修剪版本...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

    setContentView(R.layout.main);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, Set your layout for title here and mention your button in this layout);

   final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
    if ( myTitleText != null ) {
        /*  your code here */
    }
}

1

我认为更好的方法是使用Handler刷新视图,如果它处于活动状态。如果在恢复活动时拉取内容,则每次离开和返回视图时都会刷新。如果您希望用户坐在视图的顶层并需要更新信息,则可以使用延迟处理程序来处理这个问题,该处理程序将调用您的恢复方法并定期刷新视图,从而消除了按钮的需求。

这里是处理程序类文档的链接。我建议首先查看Handler的基本用法。然后测试sendMessageDelayed方法,以便在每次调用结束时重新启动Handler。此外,请确保仅在您的活动为顶级活动时才创建新的处理程序,并且如果不是,则不要打扰刷新UI。向暂停和恢复事件添加一个简单的isActive标志是检查这一点的不错方法。


1
你假设每个人都有无限的数据计划,但并非所有人都有。其他人按兆字节付费。自动刷新作为一种选项很酷,但将其作为唯一选项则不酷。 - CommonsWare

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