web-dev-qa-db-fra.com

Titre personnalisé avec image

je crée un titre personnalisé pour l'activité en désactivant le standard et en gérant tout moi-même. Je me demande s'il est possible de remplacer le titre standard/theme par mes besoins.

Je peux personnaliser la taille, l'image d'arrière-plan et le texte via des thèmes en modifiant les éléments windowXYZStyle.

La seule chose que je n'ai pas pu trouver - comment ajouter une image au lieu d'un texte. J'ai essayé requestWindowFeature(Window.FEATURE_CUSTOM_TITLE) et assigné une disposition personnalisée - mais cela ne semble pas fonctionner.

EDIT: Voici un rapport de suggestions de tests, le code est ci-dessous - résultat - la vue d'image ne s'affiche pas.

Activité

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>
27
Alex Volovoy

Il est possible de définir votre propre mise en page de titre personnalisée, mais l'ordre d'exécution est important. Vous devez faire les choses dans cet ordre:

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

En outre, vous devrez peut-être augmenter la taille du titre; si vous ne le faites pas, le bas de votre mise en page personnalisée peut simplement être couvert par votre activité. Vous pouvez modifier la taille en ajoutant un thème qui spécifie la taille du titre. Cela irait dans un fichier XML de valeurs:

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

Ensuite, vous devez définir le thème de votre activité (ou application, si vous souhaitez que l'application entière ait cette barre de titre personnalisée) dans AndroidManifest.xml:

<activity Android:name=".MyCustomTitleActivity" Android:theme="@style/LargeTitleTheme" />
35
Daniel Lew

Vous pouvez toujours utiliser:

requestWindowFeature(Window.FEATURE_NO_TITLE);

Et puis créez votre propre barre de titre dans la vue de votre activité.

7
Dave Webb

Êtes-vous sûr que vous devez utiliser une image dans le titre plutôt que de simplement la combiner dans le cadre de votre image d'arrière-plan et laisser le titre vide? En utilisant une image NinePatch , je m'attendrais à ce que vous puissiez obtenir un résultat qui aurait fière allure quel que soit l'appareil?

1
Casebash

J'ai utilisé le code suivant pour adapter mon titre personnalisé à l'écran

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