में डेटा बाइंडिंग का उपयोग करके लेआउट_विड्थ और लेआउट_हेइट को कैसे बांधें, मैं एक बूलियन बांधने की कोशिश कर रहा हूं जो स्क्रीन आकार छोटा होने पर इमेज व्यू को इंगित करता है, इसलिए अगर मुझे अन्य घटकों के लिए और अधिक जगह चाहिए तो यह घटता है। मैं ऐसा करने के लिए DataBinding Library का उपयोग कर रहा हूं।एंड्रॉइड
मेरे लेआउट जिसका चौड़ाई और ऊंचाई इस बूलियन पर निर्भर करता है:
...
<data>
...
<variable name="smallScreen" type="boolean"/>
...
</data>
...
<ImageView
android:layout_width="@{smallScreen ? @dimen/img_small_screen_size : @dimen/img_big_screen_size}"
android:layout_height="@{smallScreen ? @dimen/img_small_screen_size : @dimen/img_big_screen_size}"
android:layout_gravity="center_horizontal"
android:contentDescription="@{message}"
android:src="@{image}"
android:scaleType="center"
tools:src="@drawable/img_message_private"/>
...
अगर मैं सिर्फ इस तरह अपने प्रोजेक्ट बनाने की कोशिश, संकलक का कहना है layout_width प्रकार नाव स्वीकार नहीं कर सकते। पर्याप्त मेला, मैं इस प्रकार है, बनाने के लिए एक नाव लेआउट विशेषताओं के लिए प्रवेश BindingAdapter वर्ग का उपयोग करें:
...
@BindingAdapter("android:layout_width")
public static void setLayoutWidth(View view, float width) {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.width = (int) width;
view.setLayoutParams(layoutParams);
}
@BindingAdapter("android:layout_height")
public static void setLayoutHeight(View view, float height) {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.height = (int) height;
view.setLayoutParams(layoutParams);
}
...
अपने प्रोजेक्ट बनाने की अनुमति देता है। लेकिन जब लेआउट अंत में गाया जा रहा है, मैं निम्न अपवाद में गिरावट:
java.lang.RuntimeException: Binary XML file line #21: You must supply a layout_width attribute.
बस जानकारी के लिए, मेरे आयाम, डी पी इकाइयों में स्थापित कर रहे हैं इस प्रकार है:
<dimen name="img_small_screen_size">100dp</dimen>
<dimen name="img_big_screen_size">208dp</dimen>
कोई जानता है कि कैसे कर सकते हैं मैं layout_width विशेषता को ओवरराइड करता हूं ताकि मैं आयामों का उपयोग करके सीधे इसके साथ डेटाबेस का उपयोग कर सकूं?
आप "एंड्रॉइड: लेआउट_विड्थ" का भी उपयोग कर सकते हैं। आपको अपना नामस्थान उपयोग करने की ज़रूरत नहीं है। –
यह सच है, अभी मेरा जवाब संपादित किया गया है –
अब आपका उत्तर प्रश्न – Bolein95