1

Ich versuche, einen benutzerdefinierten ActionBar-Titel dynamisch zu ändern, wenn bestimmte Dinge im Hauptteil der Ansicht passieren. Und obwohl ich in der Lage gewesen, richtig den Titel zunächst auf, den folgenden Code verwenden ...Wie ändere ich einen benutzerdefinierten ActionBar-Titel dynamisch?

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
getSupportActionBar().setCustomView(R.layout.activity_scanning_title); 

Ich kann nicht von dem ActionBar, um Zugriff auf das richtige Objekt scheinen, um es zu ändern, wenn nötig. Da die intuitive Option getCustomView() war, habe ich so weit gekommen:

ActionBar bar = getSupportActionBar(); 
android.view.View v = bar.getCustomView(); 
if (v instanceof android.widget.LinearLayout) 
{ 
    LinearLayout layt = (LinearLayout)v; 
    // ??? 
    . . . 
} 

und es stellt sich, dass getCustomView() in der Tat ein Linearlayout zurückkommt, aber ich kann nicht an der Textview erhalten, die Teil des Layouts ist, was den ursprünglichen Titel richtig angezeigt hat, muss ich nur ändern.

Die xml für das Linearlayout, die meine eigenen Titel definiert ist hier:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
android:orientation="vertical"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="Scan Assessment" 
    android:textColor="#ffffff" 
    android:textSize="18sp" /> 
</LinearLayout> 

Antwort

1

die TextView eine ID geben:

<TextView 
    android:id="@+id/title" 
    ... /> 

Anruf findViewById() auf dem benutzerdefinierten View es zu bekommen:

TextView title = (TextView) bar.getCustomView().findViewById(R.id.title); 

Und verwenden Sie die setText() m ethod, um Ihren Titel zu ändern:

title.setText("New title"); 
+0

Das ist in der Tat die richtige Antwort. Und eine sehr gründliche auch. Arbeitete wie ein Champion. – Alyoshak

Verwandte Themen