27 Stimmen

Benutzerdefinierter Titel mit Bild

Ich erstelle benutzerdefinierte Titel für Aktivitäten, indem ich den Standardtitel deaktiviere und alles selbst verwalte. Ich frage mich, ob es möglich ist, den Standardtitel zu ersetzen/an meine Bedürfnisse anzupassen.

Ich kann Größe, Hintergrundbild und Text über Themen anpassen, indem ich die windowXYZStyle-Elemente ändere.

Das Einzige, was ich nicht finden konnte, war, wie ich ein Bild anstelle von Text hinzufügen kann. Ich habe versucht requestWindowFeature(Window.FEATURE_CUSTOM_TITLE) und ein benutzerdefiniertes Layout zuweisen - aber es scheint nicht zu funktionieren.

EDIT : Hier ist ein Bericht der Testvorschläge, Code ist unten - Ergebnis - Bildansicht wird nicht angezeigt.

Tätigkeit

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>

36voto

Dan Lew Punkte 83507

Es ist möglich, ein individuelles Titellayout zu erstellen, allerdings ist die Reihenfolge der Ausführung wichtig. Sie müssen die 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);

Außerdem müssen Sie möglicherweise die Größe des Titels erhöhen; andernfalls wird der untere Teil des benutzerdefinierten Layouts von der Aktivität überdeckt. Sie können die Größe ändern, indem Sie ein Design hinzufügen, das die Größe des Titels festlegt. Dies würde in einer XML-Datei für Werte erfolgen:

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

Dann müssen Sie das Thema für Ihre Aktivität (oder Anwendung, wenn Sie möchten, dass die gesamte Anwendung diese benutzerdefinierte Titelleiste hat) in AndroidManifest.xml festlegen:

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

7voto

Dave Webb Punkte 184809

Sie können immer verwenden:

requestWindowFeature(Window.FEATURE_NO_TITLE);

Und dann erstellen Sie Ihre eigene Titelleiste in der Ansicht Ihrer Aktivität.

1voto

Casebash Punkte 106938

Sind Sie sicher, dass Sie ein Bild im Titel verwenden müssen, anstatt es einfach als Teil des Hintergrundbildes zu kombinieren und den Titel leer zu lassen? Die Verwendung eines NinePatch Bild würde ich erwarten, dass Sie in der Lage wären, ein Ergebnis zu erzielen, das unabhängig vom Gerät gut aussieht?

1voto

arunprakashpj Punkte 3734

Ich habe den folgenden Code verwendet, um meinen benutzerdefinierten Titel an den Bildschirm anzupassen

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X