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>
War es hilfreich?

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" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top