2013-01-08 7 views
7

एंड्रॉइड लेआउट एक लेआउट_वेट का उपयोग करते हैं। मैं सभी घटकों के लिए 1/3 का लक्ष्य रख रहा हूं लेकिन कभी-कभी पाद लेख सचमुच चला जाता है, और फिर दिखाई देता है। वजन घटाने से सेटिंग करते समय वजन गणना कैसे काम करती है? मैं एक रैखिक लेआउट के अंदर सामग्री नहीं देख रहा हूँ जिसमें 1/3 वजन है?एंड्रॉइड: layout_weight = "33" कैसे चला जाता है-> दिखाई देने वाला दृश्य-> इस पर प्रभाव पड़ा?

+0

वास्तव में किसी को इस प्रश्न को वोट देना चाहिए। –

उत्तर

-1

सुनिश्चित करें कि आप 0dp को ऊंचाई सेट और फिर 1

यानी

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="Hello World, MyActivity" 
     android:background="#f00" 
     /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="Hello World, MyActivity" 
     android:background="#00f" 
     /> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="Hello World, MyActivity" 
     android:background="#0f0" 
     /> 
</LinearLayout> 

को देखे जाने का सब पर वजन सेट जब एक दृश्य समाप्त हो शेष विचारों के लिए निर्धारित है उनके अनुपात भर जाएगा स्क्रीन का यदि आप पहले 2 विचारों को जाने के लिए तीसरा दृश्य सेट करते हैं तो

इसके अलावा, यदि आप शेष दृश्यों को केवल 1/3 स्थान लेना चाहते हैं (यानी 2/3 इस्तेमाल किया और 1/3 खाली छोड़ दें) के लिए अदृश्य नहीं गए अपने छिपे हुए दृश्य सेट

0

यह बदलाव के लिए अपने वजन को बदलने प्रदान करने के बाद एक दृश्य पर refreshDrawableState() कॉल करने के लिए आवश्यक हो गया लगता है:

((LinearLayout.LayoutParams) btnFav.getLayoutParams()).weight = 3f; 
btnFav.refreshDrawableState();