Пользовательское название с изображением
Я создаю пользовательский заголовок для активности, отключая стандартный и сам управляя всем. Интересно, можно ли заменить стандартное название темы/темы на мои нужды.
Я могу настроить размер, фоновое изображение и текст через темы, изменив элементы windowXYZStyle.
Единственное, что я не мог найти - как я могу добавить изображение вместо текста.
Я пробовал requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)
и назначить пользовательский макет, но он, похоже, не работает.
EDIT: Вот отчет о предложениях по тестированию, код ниже - результат - изображение не отображается.
Деятельность
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>
Ответы
Ответ 1
Можно настроить собственный собственный макет заголовка, однако порядок выполнения имеет значение. Вы должны сделать что-то в этом порядке:
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" />
Ответ 2
Вы всегда можете использовать:
requestWindowFeature(Window.FEATURE_NO_TITLE);
И затем создайте свою собственную строку заголовка в своем представлении активности.
Ответ 3
Вы уверены, что вам нужно использовать изображение в названии, а не просто комбинировать его как часть вашего фонового изображения и оставить заголовок пустым? Используя NinePatch, я бы ожидал, что вы сможете достичь результата, который будет хорошо смотреться независимо от устройства?
Ответ 4
Я использовал следующий код, чтобы соответствовать моему пользовательскому заголовку на экране
<ImageView
android:id="@+id/header_img"
android:src="@drawable/header_img"
android:layout_width="700dip"
android:layout_height="70dip" />