मेरे पास कस्टम सेल फैक्ट्री के साथ एक सूची दृश्य है। मैं अधिकतम सेल्स MINWidth की गणना करता हूं और इसे संपूर्ण सूची दृश्य के लिए minWidth के रूप में सेट करता हूं। तो लेआउट में अन्य क्षेत्रों द्वारा बाधित सूची दृश्य बिल्कुल मिनीविड्थ तक छोटा हो गया है। लेकिन इसे रखने वाली कोशिकाओं को पसंदीदा चौड़ाई में बदल दिया जाता है, कम से कम नहीं। नतीजतन नोड्स व्यूपोर्ट और क्षैतिज स्क्रॉलबार को दिखाने के लिए फिट नहीं होते हैं।अपनी कोशिकाओं की ListView चौड़ाई फिट चौड़ाई कैसे बनाएं
यह बुरा है। मैं प्रत्येक सेल को सूची दृश्य में बिल्कुल फिट करना चाहता हूं, और स्क्रॉलबार से छुटकारा पाता हूं। ज़्यादा सही। जब ListView को इसकी न्यूनतम चौड़ाई तक कम कर दिया जाता है, तो इसकी सभी कोशिकाओं को भी कम से कम चौड़ाई तक कम किया जाना चाहिए।
मैं कुछ नियंत्रण संपत्ति की तलाश कर रहा हूं जो किसी पूर्व निर्धारित स्विच के मामले में वर्णित व्यवहार प्राप्त करने के लिए कुछ हैक के सेल आकार बदलने नीति को स्विच करता है।
अद्यतन: जोड़ा ग्राफिक उदाहरण
मैं SplitPane परीक्षण लेआउट आसान बनाने के लिए बनाया गया है। मैं अपने विभाजक को माउस से ले जाकर लेआउट प्रतिबंधों को परिभाषित कर सकता हूं।
पहला शॉट प्रारंभिक समस्या दिखाता है: सेल नोड्स के वास्तविक आयाम (न्यूनतम, अधिकतम, pref) का सम्मान नहीं किया जाता है। ListView हमेशा prefWidth का उपयोग करता है भले ही यह व्यूपोर्ट चौड़ाई से अधिक हो। इसलिए क्षैतिज स्क्रॉल का उपयोग तब किया जाता है जब इसे टाला जा सके।
उसके बाद मैं मैन्युअल रूप से पसंद की चौड़ाई कम पर सेट करने की कोशिश की। तो सेल अब पूरी तरह से दिखाई दे रहा है। यह समाधान नहीं है। मैं इस शॉट को साबित करने के लिए देता हूं कि सेलव्यू में सूची दृश्य के अंदर फिट होने के लिए पर्याप्त रूप से छोटा मिनीविड्थ है।
पिछले शॉट भी बदसूरत है। यह मुक्त स्थान छोड़ देता है जो सेल सामग्री से भरा जा सकता है। यह स्वाभाविक है: यदि व्यूपोर्ट पसंदीदा चौड़ाई से अधिक है और अधिकतम चौड़ाई से छोटा है, तो इसका उपयोग सेल सामग्री का आकार बदलने के लिए किया जाना चाहिए।
समस्या को स्पष्ट रूप से निर्दिष्ट तत्वों के स्थिर आकार में स्विच करके दबाया जा सकता है। लेकिन ऐसा करने का मतलब गतिशील लेआउट के सभी लाभों को त्यागना है: प्रोग्रामर को प्रत्येक बार नई त्वचा को सीएसएस के साथ लागू करने के लिए आकार स्थिरांक बदलने के लिए बाध्य किया जाएगा और उपयोगकर्ता को खिड़की का आकार बदलने या माउस के साथ विभाजक को स्थानांतरित करने के लिए निषिद्ध किया जाएगा।
और यह भी खराब समाधान है। मुझे जवाफक्स काम के लेआउट इंजन बनाने के लिए क्या चाहिए। ListView की न्यूनतम चौड़ाई इसकी कोशिकाओं की सबसे बड़ी न्यूनतम चौड़ाई होनी चाहिए। ListView की अधिकतम चौड़ाई अपनी कोशिकाओं की न्यूनतम अधिकतम चौड़ाई होना चाहिए। ListView की पसंदीदा चौड़ाई को इसकी कोशिकाओं की सबसे बड़ी चौड़ाई चाहिए। और ListView की वास्तविक चौड़ाई की तुलना में सभी तीन लेआउट सीमाओं के सम्मान के साथ अपने माता-पिता (स्प्लिटपेन इस उदाहरण में) द्वारा निर्धारित की जानी चाहिए। और उसके बाद यह आकार कोशिकाओं को पारित किया जाना चाहिए।
क्षैतिज स्क्रॉलबार केवल तभी दिखाना चाहिए जब कुछ सेल न्यूनतम चौड़ाई व्यूपोर्ट में फ़िट होने के लिए बहुत बड़ी हो।
क्या आप कृपया पहले से प्रयास किए गए कोड के लिए कोड जोड़ सकते हैं। यदि संभव हो तो एक छवि भी। – ItachiUchiha
मैंने वास्तव में स्कैला में लिखा था। क्या यह जावा कोड में स्कैला कोड पोस्ट करने के लिए उपयुक्त है? – ayvango
"स्कैला" टैग जोड़ने के बाद हाँ। कोई इसे जावा में परिवर्तित कर सकता है हालांकि वहां कई अलग-अलग व्यवहार हो सकते हैं। –