2010-03-10 33 views
16

朋友,如何在android中動態設置自定義標題欄的TextView Value?

我曾嘗試使用以下titlebar.xml文件的代碼

<?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" 
    /> 

和Java代碼來顯示每個活動自定義標題欄創建自定義標題欄。

@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); 


} 

現在我想在每個活動中動態設置textview值任何人都可以指導我如何實現這一目標?

在這裏使用findviewbyid我沒有得到該文本視圖的參考設置值,因爲 主佈局不包含任何帶有這樣的名稱但mytitle的文本框。

任何幫助將appriciated。

+0

教程我也跟着 HTTP: //stackoverflow.com/questions/2251714/set-title-background-color – UMAR 2010-03-10 12:43:50

回答

14

這是設置自定義的方式標題:

@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); 
    } 


} 
+3

myTitleText is nu因爲它不在主佈局親愛的。這是mytitle佈局。當我們使用r.id.somthing時,它看起來在setContentView(R.layout.main)中編寫的佈局 ; 在我的情況下,它不是主要的,它是在別的地方。希望你能理解我的問題。 – UMAR 2010-03-11 06:45:46

+0

先測試,稍後再說。那麼,你認爲綠色標題從哪裏來? – 2010-03-11 08:56:38

+0

嗨,這是改變標題欄的背景顏色,但我看到一些偏左左側。這樣看起來不太好。你能幫我解決這個問題嗎? – 2011-04-29 12:22:02

0

嘗試以下操作:

@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 =========="); 
} 

您可以使用hierarchyviewer,看看你的看法是訪問(你會看到在層次圖其ID)

1

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> 

代碼:

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"); 
    } 
}); 

因爲自定義標題默認是固定的,你應該自己寫一個主題:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/MyTheme"> 
14

SDK 2.1+

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.main); 
    setTitle("========= NEW TITLE =========="); 
} 
+0

這個解決方案很有用!不知何故,最新的功能都被隱藏在一堆隨機解決方案中。感謝:-) – 2011-09-02 19:30:03

+0

它是否在中心設置標題? – 2016-04-03 07:57:07

相關問題