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.
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);
}
}
Avez-vous essayé le setTitle()
méthode de votre Activity
?
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">
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)