मेरे पास कई नेस्टेड लेआउट हैं जो मैं कोड में मांग पर 90 डिग्री घुमाने की कोशिश कर रहा हूं। मुझे बस ठीक काम करने वाली चीज़ों का सेटरोटेशन हिस्सा मिला है, लेकिन दुर्भाग्यवश चीजें घूर्णन के साथ काफी सही आकार में नहीं आ रही हैं। इन तत्वों की चौड़ाई match_parent पर सेट की गई है, और रोटेशन के बाद भी यह पैरेंट चौड़ाई से मेल खाती है, माता-पिता की ऊंचाई नहीं कि यह मेल खाना चाहिए।setRotation का उपयोग करने के बाद लाइनर में match_parent को रीफ्रेश कैसे करें?
एक्सएमएल
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="link.basiclifecounter.LifeCounter"
android:background="#CC00CC">
<LinearLayout
android:id="@+id/topPlayers"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:orientation="vertical"
android:background="#CC0000">
<RelativeLayout
android:id="@+id/p3"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
**A bunch of stuff in here**
</RelativeLayout>
<RelativeLayout
android:id="@+id/p2"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
**A bunch of stuff in here**
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/bottomPlayer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:background="#00CC00">
<RelativeLayout
android:id="@+id/p1"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
**A bunch of stuff in here**
</RelativeLayout>
</LinearLayout>
</LinearLayout>
रोटेशन जावा कोड
view.findViewById(R.id.topPlayers).setRotation(90); //Rotate the entire top box
view.findViewById(R.id.p3).setRotation(180); //Flip one side so both players face outwards
This picture से पहले रोटेशन होता छवि को दर्शाता है।
This picture रोटेशन के बाद छवि दिखाता है।
जैसा कि आप देख सकते हैं, पूरे बॉक्स को इसकी ऊंचाई के बाद घुमाया गया है और चौड़ाई पहले ही सेट हो चुकी है। अज्ञात संस्करण में चौड़ाई (match_parent) पूर्ण स्क्रीन होनी चाहिए और ऊंचाई (layout_weight = 2) स्क्रीन के 2/3s होना चाहिए। यह ठीक काम करता है। समस्या घूमने के बाद होती है, ये आकार नए घूर्णन को बदलने और बदलने के बजाए समान रहते हैं।
मैंने समस्या निवारण में मदद के लिए कुछ उज्ज्वल पृष्ठभूमि रंगों में फेंक दिया, कि जो गुलाबी आप देख रहे हैं वह मुख्य लीनियरआउट में है, न कि घुमाए गए किसी भी लेआउट में।
मैंने कोड के बजाय xml में घूर्णन को शामिल करने का प्रयास किया, और बाद के चित्र के समान सटीक परिणाम प्राप्त किए, इसलिए यह स्पष्ट रूप से कुछ है जो मुझे समझ में नहीं आता कि लेआउट चौड़ाई कैसे प्राप्त करें मुझे चाहिए। क्या मैं रोटेशन के साथ लेआउट_वेट का प्रभावी ढंग से उपयोग नहीं कर सकता?
क्या इसके लायक मैं इस का समाधान किया था कभी नहीं के लिए।मैंने रोटेशन के साथ और बिना अलग कस्टम एक्सएमएल फाइलें तैयार कीं और एक कस्टम वर्टिकल टेक्स्टव्यू का उपयोग करके सुझाव दिया [यहां] (http://stackoverflow.com/questions/1258275/vertical-rotated-label-in-android) मेरा टेक्स्ट प्राप्त करने के लिए घुमाना। एक आकर्षण की तरह काम करना, भले ही एकाधिक एक्सएमएल फाइलें एक साधारण रोटेशन की तुलना में थोड़ा उलझन में हों। –
मुझे अभी तक एक सुंदर जवाब नहीं है, लेकिन मुझे लगता है कि यह दृश्य के माता-पिता के आयाम प्राप्त करके और दृश्य के आयामों को मिलान करने के लिए प्राप्त किया जा सकता है। आईई, 'int चौड़ाई = ((देखें) myView.getParent())। GetWidth(); ',' myView.setLayout पैराम (नया फ्रेमलाउटआउट .आउटआउट (चौड़ाई, ऊंचाई)); '। मुझे स्थिति के साथ कुछ समस्याएं हैं, लेकिन मुझे लगता है कि मैं 'setPivotX()' और 'setX() 'के कुछ संयोजन वाले लोगों को दूर कर सकता हूं। – VinceFior
लेआउट पैरामीटर की ऊंचाई और वजन मानों को स्वैप करें और जब आप इसे घुमाते हैं तो दृश्य के लेआउट पैरा को रीसेट करें। –