Пользовательский заголовок с изображением - PullRequest
27 голосов
/ 18 января 2010

Я создаю пользовательский заголовок для активности, отключая стандартный и управляю всем самостоятельно.Интересно, можно ли заменить / стандартный заголовок темы на мои нужды.

Я могу настроить размер, фоновое изображение и текст через темы, изменив элементы 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>

Ответы [ 4 ]

35 голосов
/ 18 января 2010

Можно установить собственный макет заголовка, однако порядок выполнения имеет значение. Вы должны делать вещи в следующем порядке:

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

Кроме того, вам может потребоваться увеличить размер заголовка; если вы этого не сделаете, то нижняя часть вашего пользовательского макета может быть просто закрыта вашей деятельностью. Вы можете изменить размер, добавив тему, которая определяет размер заголовка. Это войдет в XML-файл значений:

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

Тогда вам нужно будет установить тему для вашего занятия (или приложения, если вы хотите, чтобы у всего приложения была эта пользовательская строка заголовка) в AndroidManifest.xml:

<activity android:name=".MyCustomTitleActivity" android:theme="@style/LargeTitleTheme" />
7 голосов
/ 18 января 2010

Вы всегда можете использовать:

requestWindowFeature(Window.FEATURE_NO_TITLE);

А затем создайте свою собственную строку заголовка в представлении своей деятельности.

1 голос
/ 14 марта 2015

Я использовал следующий код для размещения моего пользовательского заголовка на экране

<ImageView
    android:id="@+id/header_img"
    android:src="@drawable/header_img"
    android:layout_width="700dip"
    android:layout_height="70dip" />
1 голос
/ 29 апреля 2010

Вы уверены, что вам нужно использовать изображение в заголовке, а не просто комбинировать его как часть фонового изображения и оставить заголовок пустым? Используя изображение NinePatch , я ожидаю, что вы сможете добиться результата, который будет хорошо выглядеть независимо от устройства?

...