2012-05-22 71 views
0

我創建了一個完美展現的簡單自定義標題。不過,我不確定爲了讓setTitle方法發揮它的魔力,我的TextView需要什麼id。Android中的自定義標題和setTitle

我的第一選擇是@android:ID /標題,但沒有奏效。

示例 我已經在xml中定義了一個自定義標題佈局並將其添加到了我的活動中。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/custom_title" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/transparent" > 

    <ImageView 
     android:id="@+id/logo" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="5dp" 
     android:scaleType="centerInside" 
     android:onClick="home" 
     android:src="@drawable/logo" /> 

    <TextView 
     android:id="@android:id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:textSize="18dp" 
     android:textStyle="bold" 
     android:layout_centerVertical="true" 
     android:text="TextView" /> 
</RelativeLayout> 

TextView現在是「標題」容器。我想要的是清單中的android:label值自動放入這個新標題TextView中。

即,默認方法setTitle必須將此值添加到一些定義的視圖ID - 我只需要該ID。

+0

在此處添加您的代碼。 – Sajmon

回答

1

我不得不創建一個自定義標題類似的功能。我非常懷疑你可以通過匹配一個id來實現,如果Android允許的話,這將是一個巨大的安全缺陷。我所做的是擴展活動,然後重寫setTitle方法,像...

TextView mCustomTitle; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.myLayout); 
    mCustomTitle = (TextView)findViewById(R.id.title); 
} 

@Override 
public void setTitle(CharSequence title) { 
    //you can override the other setTitle as well if you need it 
    mCustomTitle.setText(title);   
} 
+0

這或多或少是我所做的。我還使用getTitle包含了清單中的標題。 IE瀏覽器。 .setText(getTitle()); – slott

+0

您是否將其創建爲基類?我發現真的把大部分麻煩都帶走了嗎? – MikeIsrael

+0

是的,我有一個我從中擴展的BaseActivity類。它使事情變得更容易,但我仍然認爲如果setTile可以使用自定義標題xml,如果正確的id用於持有標題的testview,那將會很好。 – slott

2

設置的setTitle活動的標題,它無關的TextView的 你需要使用的setText()來設置一個TextView的文本:

((的TextView)findViewById(R.id.text_view_id ))。setText(「TextView text」);

編輯:選中該解決方案 - >how to set custom title bar TextView Value dynamically in android?

+0

是的,我知道如何設置文本視圖的文本。我所要求的是在我的自定義標題佈局中使用的id,以便setTitle方法仍然可以工作。 – slott