2012-02-03 10 views
28

मैं एक TextView मैं अपने मेनू पृष्ठ का शीर्षक के रूप में उपयोग किया है ओवरराइड:एक TextView को शामिल करें और पाठ

<TextView 
    android:id="@+id/menuTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Menu" 
    android:textColor="@color/white" 
    android:textSize="25sp" 
    android:textStyle="bold" /> 

अब मैं एक ही रंग, आकार और में हर उप मेनू पर शैली के साथ एक TextView जरूरत है मेरी एप्लिकेशन। पूरे लेआउट व्यू को प्रत्येक लेआउट में चिपकाने की प्रतिलिपि बनाने के बजाय और प्रत्येक में टेक्स्ट को बदलने के बजाय मैंने सोचा कि मैं टेक्स्ट व्यू के साथ एक लेआउट बनाउंगा और इसे प्रत्येक उप मेनू दृश्य में शामिल कर सकता हूं, केवल टेक्स्ट को ओवरराइड कर सकता हूं।

मेरे कोड इस तरह दिखता है:

/layout/menutextview.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/menuTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/default" 
    android:textColor="@color/white" 
    android:textSize="25sp" 
    android:textStyle="bold" /> 

शामिल प्रत्येक लेआउट xml फ़ाइल पाठ विशेषता ओवरराइड करने के लिए कोशिश करता है में:

<include layout="@layout/menutextview" android:text="@string/menu" /> 

<include layout="@layout/menutextview" android:text="@string/settings" /> 

लेकिन डिफ़ॉल्ट पाठ हर जगह प्रदर्शित होता है। किसी के पास समस्या क्या हो सकती है?

सादर, मैटिस

उत्तर

18

StackOverflow में आपका स्वागत है;)

शामिल करें "ओवरराइड" बच्चों गुण करने के लिए इस्तेमाल नहीं किया जा सकता। यह नहीं जानता कि आप किस प्रकार के लेआउट को शामिल करेंगे, यह केवल इसे बढ़ाएगा और इसे वर्तमान लेआउट में जोड़ देगा।

टेक्स्ट को गतिशील रूप से बदलने के लिए, आपको कोड में ऐसा करने की आवश्यकता है।

final TextView textView1 = (TextView) findViewById(R.id.menuTextView); 
textView1.setText(R.string.menu); 

final TextView textView2 = (TextView) findViewById(R.id.settingsTextView); 
textView2.setText(R.string.settings); 
+1

यह सबसे आसान और मुख्य-अनुकूल-अनुकूल समाधान है जिसका उपयोग आप इस समस्या के लिए कर सकते हैं। –

+1

क्या कोई कस्टम फ़ील्ड नहीं है जहां मैं xml से कोड में जो कुछ भी चाहता हूं उसे पास कर सकता हूं? इस तरह: <लेआउट = "@ लेआउट/मेन्यूटक्स्टव्यू" एंड्रॉइड शामिल करें: कस्टम = "@ स्ट्रिंग/मेनू" /> फिर कोड में मैं जा सकता हूं ((टेक्स्ट व्यू) findViewById (R.id.menuTextView))। SetText (getCustom ()); – Mattias

+1

मैं आपके जैसा ही चाहता था, और प्रलेखन के अनुसार, आप केवल लेआउट (और आईडी) विशेषताओं को ओवरराइड कर सकते हैं। – viplezer

14

शैलियों का उपयोग कर की कोशिश करो और TextView कि शैली को लागू किया है। इससे आपके विचारों में निरंतरता बनाए रखना आसान हो जाएगा।

संबंधित मुद्दे