2011-09-19 13 views
13

मुझे कुछ समस्या का सामना करना पड़ रहा है जिसे मैं मूल रूप से ठीक करने के बारे में नहीं जानता। मैं इसमें कुछ बच्चे compenents, imageView, TextView तरह और इतने पर, एक उदाहरण नीचे एक्सएमएल में देखा जा सकता के साथ एक LinearLayout है:एंड्रॉइड: अभिभावक राज्य को बच्चे के दृश्य में प्रचारित करें

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
style="@style/list_buttom_top"> 

<LinearLayout android:gravity="center_vertical" 
    android:paddingLeft="10dip" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1.0"> 

    <TextView android:text="title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/title" 
     style="@style/content_page_large_text" /> 

    <TextView android:text="summary" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/subtitle" 
     android:visibility="visible" 
     style="@style/content_page_small_text" /> 
</LinearLayout> 

<TextView android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/itemCount" 
    android:visibility="gone" 
    style="@style/content_page_large_count_text" /> 

<ImageView android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/chevron" 
    style="@style/list_buttom_chevron" /> 

</LinearLayout> 

शैली list_buttom_top का कहना है कि जब LinearLayout दबाया राज्य में है, पृष्ठभूमि रंग को बदलने की जरूरत है, और अब तक यह काम कर रहा है। समस्या यह है कि content_page_large_text यह भी कहता है कि टेक्स्ट व्यू का टेक्स्ट रंग भी बदला जाना चाहिए, लेकिन ऐसा नहीं होता है। जब मैं LinearLayout पर क्लिक कर रहा हूं तो एकमात्र रंग बदल रहा है इसकी पृष्ठभूमि है।

<style name="list_buttom_top"> 
<item name="android:clickable">true</item> 
<item name="android:paddingTop">10dip</item> 
<item name="android:paddingBottom">10dip</item> 
<item name="android:paddingLeft">10dip</item> 
<item name="android:paddingRight">10dip</item> 
<item name="android:gravity">center_vertical</item> 
<item name="android:background">@drawable/background_view_rounded_top</item> 
</style> 

<style name="list_buttom_chevron"> 
    <item name="android:paddingLeft">4.0dip</item> 
    <item name="android:paddingTop">2.0dip</item> 
    <item name="android:paddingRight">4.0dip</item> 
    <item name="android:paddingBottom">2.0dip</item> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:src">@drawable/chevron</item> 
</style>  

मैं इस एंड्रॉयड का उपयोग कर की कोशिश की है: duplicateParentState = "true" मेरी TextViews में लेकिन यह भी फ्लॉप काम। ImageView के लिए भी ऐसा ही होता है, जब मैं LinearLayout पर क्लिक कर रहा हूं, तो इसकी स्रोत छवि नहीं बदली जाती है।

क्या मुझे यहां कुछ याद आ रही है? ध्यान के लिए धन्यवाद टी

उत्तर

0

यह ट्रैक करना एक आसान मुद्दा होगा कि क्या हम आपकी सामग्री_पृष्ठ_लर्ज_टेक्स्ट शैली देख सकते हैं। साथ ही, मैं नहीं देखता कि आप वास्तव में रंग कैसे सेट कर रहे हैं, क्या आपकी पृष्ठभूमि_view_rounded_top <selector> तत्व है या आप इसे गतिविधि में श्रोता में सेट कर रहे हैं?

लेकिन हाँ मैंने हाल ही में यह भी पाया कि एंड्रॉइड: डुप्लिकेट पेरेंटस्टेट = "सच" पैनसिया नहीं है जिसे मैंने सोचा था।

क्या उन दो समाधानों को समाप्त किया जाना चाहिए, तो मेरा जाने-माने समाधान आमतौर पर रूट लेआउट के लिए एक कस्टम घटक है। http://developer.android.com/guide/topics/ui/custom-components.html लेकिन यदि इंटरफ़ेस यह आसान है तो यह आवश्यक नहीं हो सकता है। मुझे यकीन है कि आप इसे StateListDrawable एस के साथ कर सकते हैं।

कस्टम घटक आमतौर पर एक्सएमएल चर के जादू संयोजन को खोजने की कोशिश करने से अधिक आसान होते हैं, और यदि आप इसे और अधिक जटिल बनाने की योजना बना रहे हैं तो लेआउट को अधिक समझने योग्य/संपादन योग्य बना देगा।

33

मुझे लगता है कि आपको रैखिक लेआउट में android:addStatesFromChildren="true" सेट करना चाहिए, इस प्रकार बच्चों की स्थिति माता-पिता को प्रचारित की जाती है।

इसके अलावा, नहींandroid:duplicateParentState="true" के साथ इस गठबंधन करने के लिए यकीन है कि (मूल रूप से एक अनंत संदर्भ पाश के कारण) के बाद से यह एक ढेर अतिप्रवाह अपवाद का कारण होगा बनाते हैं।

+5

भले ही सवाल का पूरी तरह उत्तर नहीं दे रहा है, 'एंड्रॉइड: डुप्लिकेटपेरस्टेट = "सत्य"' वही था जो मैं ढूंढ रहा था। – PureSpider

+0

संपादन के लिए @SMR धन्यवाद ... –

+0

उन्होंने पूछा कि कैसे माता-पिता से बच्चे को बच्चे को प्रचारित करना है। कोई और रास्ता नही। –

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

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