Benutzerdefinierter Titel mit Bild
Frage
Ich erstelle einen benutzerdefinierten Titel für Aktivitäten, indem ich Standard deaktiviere und alles selbst verwaltete. Ich frage mich, ob es möglich ist, den Standart -Titel für meine Bedürfnisse zu ersetzen/zu thematisieren.
Ich kann Größe, Hintergrundbild und Text über Themen anpassen, indem ich WindowxyzStyle -Elemente ändern kann.
Das einzige, was ich nicht finden konnte - wie ich Bild anstelle von Text hinzufügen kann. ich habe es versucht requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)
und weisen Sie benutzerdefiniertes Layout zu - aber es scheint nicht zu funktionieren.
Bearbeiten: Hier ist ein Bericht über Testen von Vorschlägen, Code ist unten - Ergebnis - Bildansicht wird nicht angezeigt.
Aktivität
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>
Lösung
Es ist möglich, ein eigenes benutzerdefiniertes Titellayout festzulegen, die Reihenfolge der Ausführung ist jedoch wichtig. Sie müssen Dinge in dieser Reihenfolge tun:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.my_layout);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_custom_title);
Darüber hinaus müssen Sie möglicherweise die Größe des Titels erhöhen. Wenn Sie dies nicht tun, kann der Boden Ihres benutzerdefinierten Layouts nur von Ihrer Aktivität verdeckt werden. Sie können die Größe ändern, indem Sie ein Thema hinzufügen, das die Größe des Titels angibt. Dies würde in eine Werte XML -Datei gehen:
<resources>
<style name="LargeTitleTheme">
<item name="android:windowTitleSize">40dip</item>
</style>
</resources>
Anschließend müssten Sie das Thema für Ihre Aktivität (oder Anwendung, wenn Sie möchten, dass die gesamte Anwendung diese benutzerdefinierte Titelleiste) in AndroidManifest.xml festlegen:
<activity android:name=".MyCustomTitleActivity" android:theme="@style/LargeTitleTheme" />
Andere Tipps
Sie könnten immer verwenden:
requestWindowFeature(Window.FEATURE_NO_TITLE);
Erstellen Sie dann Ihre eigene Titelleiste in der Sicht Ihrer Aktivität.
Sind Sie sicher, dass Sie ein Bild im Titel verwenden müssen, anstatt es nur als Teil Ihres Hintergrundbildes zu kombinieren und den Titel leer zu lassen? Verwendung einer Neunpatch Bild Ich würde erwarten, dass Sie ein Ergebnis erzielen könnten, das unabhängig vom Gerät gut aussehen würde?
Ich habe den folgenden Code verwendet, um meinen benutzerdefinierten Titel auf den Bildschirm anzupassen
<ImageView
android:id="@+id/header_img"
android:src="@drawable/header_img"
android:layout_width="700dip"
android:layout_height="70dip" />