كيفية تعيين القيمة المخصصة عنوان شريط النصية ديناميكيا في أندرويد؟

StackOverflow https://stackoverflow.com/questions/2416844

سؤال

اصحاب،

لقد قمت بإنشاء شريط عنوان مخصص باستخدام ملف TalkBar.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 Code لعرض شريط عنوان مخصص في كل نشاط.

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


}

الآن أريد تعيين قيمة النصية ديناميكيا في كل نشاط يمكن لأي شخص يرشدني كيف يمكنني تحقيق ذلك؟

باستخدام FindViewByid هنا أنا لا أحصل على مرجع من هذا النص إلى تعيين القيمة لأن التصميم الرئيسي لا يحتوي على أي مربع نص مع مثل هذا الاسم ولكن mytitle.

سيتم تقدير أي مساعدة.

هل كانت مفيدة؟

المحلول

هذه هي الطريقة لتعيين عنوان مخصص:

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


}

نصائح أخرى

SDK 2.1+

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

هل جربت setTitle() طريقة الخاص بك 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>

شفرة:

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

حاول القيام بما يلي:

@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 لمعرفة ما إذا كان عرضك يمكن الوصول إليه (سترى هويته في الرسم البياني الهرمي)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top