web-dev-qa-db-fra.com

Comment définir la barre de titre personnalisée TextView Value de manière dynamique dans Android?

copains,

j'ai créé une barre de titre personnalisée en utilisant le fichier citronbar.xml suivant avec code

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
  xmlns:Android="http://schemas.Android.com/apk/res/Android" 
  Android:id="@+id/myTitle" 
  Android:text="This is my new title" 
  Android:layout_width="fill_parent" 
  Android:layout_height="fill_parent" 
  Android:textColor="@color/titletextcolor"
  Android:layout_marginLeft="25px"
   Android:paddingTop="3px" 
   /> 

et Java code pour afficher la barre de titre personnalisée sur chaque activité.

@Override
    public void onCreate(Bundle savedInstanceState)
    {
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);

super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


}

maintenant, je souhaite définir la valeur TextView de manière dynamique dans chaque activité que quelqu'un peut-il guider comment puis-je y parvenir?

à l'aide de FOETVIEWBYID Ici, je n'ai pas la référence de ce TextView pour définir la valeur car la mise en page principale ne contient aucune zone de texte avec un tel nom mais mytitle.

toute aide serait appréciée.

16
UMAR

C'est le moyen de définir le titre personnalisé:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

    setContentView(R.layout.main);

    if ( customTitleSupported ) {
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);
    }

    final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
    if ( myTitleText != null ) {
        myTitleText.setText("========= NEW TITLE ==========");
        myTitleText.setBackgroundColor(Color.GREEN);
    }


}
14

Avez-vous essayé le setTitle() méthode de votre Activity?

7
Dimitar Dimitrov

my_title.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout Android:id="@+id/header"
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_height="wrap_content" Android:layout_width="fill_parent"
    Android:background="#d4e9a9">

    <ImageView Android:src="@drawable/jetpack"
        Android:layout_width="wrap_content" Android:layout_alignParentLeft="true"
        Android:layout_centerVertical="true" Android:id="@+id/back"
        Android:layout_height="wrap_content" Android:layout_alignParentTop="true" />

    <TextView Android:id="@+id/title" Android:layout_width="wrap_content"
        Android:gravity="center_vertical" Android:textSize="20px"
        Android:textColor="#ffffff" Android:layout_alignParentRight="true"
        Android:text="New Title" Android:background="#a5c639"
        Android:layout_height="wrap_content" Android:layout_alignParentTop="true"
        Android:padding="9dip" Android:layout_margin="5dip" />
</RelativeLayout>

Code:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);      
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);      

((TextView)findViewById(R.id.title)).setText("gradient shadow");

findViewById(R.id.back).setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        ((TextView)findViewById(R.id.title)).setText("loce");
    }
});

Parce que le titre de titre personnalisé est corrigé, vous devez vous écrire un thème:

<application Android:icon="@drawable/icon" Android:label="@string/app_name" Android:theme="@style/MyTheme">
1
pengwang

Essayez ce qui suit:

@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);        
     requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
     setContentView(R.layout.main);
     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);
     TextView mytitletext = (TextView) findViewById(R.id.myTitle);
     mytitletext.setText("========= NEW TITLE ==========");
}

Vous pouvez utiliser le hierarchyviewer pour voir si votre vue est accessible (vous verrez son identifiant dans le graphique de la hiérarchie)

0
ccheneson