4

我创建了一个自定义标题栏,如本示例所示

http://staticallytyped.wordpress.com/2011/03/18/android-dynamic-and-custom-title-bars/

“自定义标题栏” - 一半。

在某些活动中,我想在标题栏的右侧放置一个按钮(与 facebook 应用程序相同)。我试图按如下方式向视图添加一个按钮,但它没有出现。

自定义标题栏显示如下

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.maintabhost); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.headerbar_include);

尝试添加按钮如下。该按钮最终将是一个 ImageButton 并与自定义标题栏的右侧对齐 - 如果我让它工作的话。(刚刚意识到我现在有太多的布局参数,但这并不影响按钮显示)

    LinearLayout layout = (LinearLayout) findViewById(R.id.headerbar);
    Button searchButton = new Button(this);
    searchButton.setText("info");

    LayoutParams layoutParams = new LinearLayout.LayoutParams
    (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    searchButton.setLayoutParams(new LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));

    layout.addView(searchButton, layoutParams);
    layout.invalidate();

我可以创建另一个已嵌入按钮的自定义标题栏,但动态解决方案会更好。

干杯

4

2 回答 2

8

首先,感谢我的博客的链接。其次,让我看看我是否不能为你回答这个问题。当您想要添加一个按钮时,您无法添加另一个按钮的原因之一是,在该示例中,我让您无法通过通常的渠道检索标题栏视图。因此,让我们修复它(并可能让我在下周末写另一篇博客文章。)

从 xml 文件开始,添加一个 id 属性:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:id="@+id/title_complex">
    <!-- Stuff -->
</LinearLayout>

下面的代码向您展示如何在 Activity 中获取该按钮(稍后您必须添加所有功能):

LinearLayout layout = (LinearLayout) getWindow().findViewById(R.id.title_complex);
layout.addView(new Button(this));

如果您看一下,标题栏中有一个非描述性按钮(就像我说的,您必须添加自己的风格):

带有另一个按钮的标题栏

但是请注意,我不能保证该按钮将保留或不会保留在后续活动中。我尚未对其进行调查,但这应该可以帮助您入门。如果您还有任何问题,请随时在此处(更多眼球)或我的博客上提问。

于 2011-04-26T21:58:33.147 回答
0

这是确保按钮保留在标题栏中的一种方法:

如何在 Android 中创建自定义窗口标题

本质上,包装 android Activity 类,然后从该新类扩展。

于 2011-08-03T17:43:32.530 回答