【问题标题】:Custom title with image带有图像的自定义标题
【发布时间】:2011-01-06 10:00:52
【问题描述】:

我正在通过禁用标准标题并自己管理所有内容来为活动创建自定义标题。我想知道是否可以根据我的需要替换/主题标准标题。

我可以通过更改 windowXYZStyle 项来通过主题自定义大小、背景图像和文本。

我唯一找不到的东西 - 我如何添加图像而不是文本。 我试过requestWindowFeature(Window.FEATURE_CUSTOM_TITLE) 并分配自定义布局 - 但它似乎不起作用。

编辑:这是测试建议的报告,代码如下 - 结果 - 图像视图未显示。

活动

public class SettingsActivity extends PreferenceActivity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);

    }
}

XML :

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="26dip"
    android:paddingLeft="5dip"
    android:background="@drawable/titlebar_bg"
    android:layout_gravity="left|center"
>
    <ImageView
        android:id="@+id/logo"
        android:src="@drawable/title_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

【问题讨论】:

    标签: android window titlebar


    【解决方案1】:

    您可以设置自己的自定义标题布局,但执行顺序很重要。你必须按这个顺序做事:

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.my_layout);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_custom_title);
    

    此外,您可能需要增加标题的大小;如果你不这样做,那么你的自定义布局的底部可能会被你的 Activity 覆盖。您可以通过添加指定标题大小的主题来更改大小。这将进入一个值 XML 文件:

    <resources>
        <style name="LargeTitleTheme">
            <item name="android:windowTitleSize">40dip</item>
        </style>
    </resources>
    

    然后您需要在 AndroidManifest.xml 中为您的 Activity(或应用程序,如果您希望整个应用程序具有此自定义标题栏)设置主题:

    <activity android:name=".MyCustomTitleActivity" android:theme="@style/LargeTitleTheme" />
    

    【讨论】:

    • 嘿丹尼尔,感谢您的回复,我在提问之前已经这样做了。已经很晚了——所以我可能搞砸了。你试过这个吗?在扩展 PreferencesActivity 和 my_custom_title 的活动中尝试它有一个自定义背景和徽标(作为图像视图) - 对我来说,它确实分配了自定义标题和文本视图确实显示了 - my_custom_title 中的图像视图 - 没有。背景也是如此 - 这可以通过向 LargeTitleTheme 添加一个项目来解决。
    • 我已经完全按照上面概述的方式完成了(我从我的源代码中获取了示例代码)。但是,我以前从未在 PreferencesActivity 上尝试过;也许您还必须做一些事情来覆盖该标题栏。不过,我不确定我是否了解您现在的问题;重述?
    • 问题是图像视图没有显示在自定义标题中。而且我需要拍一张带有徽标而不是文字的图像。
    • 它肯定也适用于 PreferenceActivity;我相信您必须在致电super.onCreate 之前请求窗口功能。
    • 我会试一试并报告
    【解决方案2】:

    你总是可以使用:

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    

    然后在 Activity 的视图中创建自己的标题栏。

    【讨论】:

    • 是的,这正是我现在正在做的。我在想有一种方法可以主题标准。例如首选项活动中的标题栏。我真的不想为了标题栏而乱用自定义布局。
    • 我开始认为这可能是最好的选择。首先,它可以避免应用程序打开时标题栏闪烁,以及我需要用来从包含层删除边距的骇人听闻的解决方法,这样我就不会在标题栏周围看到灰色边框。
    【解决方案3】:

    您确定需要在标题中使用图片,而不是仅仅将其作为背景图片的一部分并将标题留空吗?使用NinePatch 图像,我希望您能够获得在任何设备上看起来都不错的结果?

    【讨论】:

      【解决方案4】:

      我已使用以下代码将我的自定义标题适合屏幕

      <ImageView
          android:id="@+id/header_img"
          android:src="@drawable/header_img"
          android:layout_width="700dip"
          android:layout_height="70dip" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-22
        • 1970-01-01
        • 2015-03-07
        • 2016-04-02
        • 2020-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多