xml text - كيف أقوم بتطبيق العمليات الحسابية على أبعاد Android؟




known linearlayout (5)

انت لا اسف لا تدعم ملفات تنسيق XML التعبيرات. انت ايضا:

  • اتركه كـ @dimen/uno_plus_dos ، أو
  • قم بتعيين الهوامش الخاصة بك في Java code ، حيث يمكنك استبدال مورد واحد بمجموعة من الأسطر الإضافية من الكود ، أو
  • اكتب المعالج الأولي الخاص بالتخطيط الذي يتعامل مع التعبيرات مثل هذا

UPDATE تدعم مكتبة ربط البيانات بعض العمليات في تعبيراتها. أنا غير متأكد ما إذا كان يمكن التعامل مع هذا السيناريو المحدد.

كيف يمكنني تجنب هذه الرياضيات ضمنية ...

<resources>
 <dimen name="uno">10dip</dimen>
 <dimen name="dos">6dip</dimen>
 <dimen name="uno_plus_dos">16dip</dimen>
</resources>

<Button 
 android:layout_marginTop="@dimen/uno_plus_dos" />

... وسرها لشيء من هذا القبيل؟

<Button
 android:layout_marginTop="@dimin/uno + @dimen/dos" />

باستخدام ربط البيانات:

android:layout_marginTop="@{@dimen/uno + @dimen/dos}"

لا يتم توفير محولات هوامش IFAIK بواسطة sdk. ستحتاج إلى تعريفه بنفسك:

@BindingAdapter("android:layout_marginTop")
public static void setBottomMargin(View view, int bottomMargin) {
    ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
    layoutParams.setMargins(layoutParams.leftMargin, layoutParams.topMargin,
            layoutParams.rightMargin, bottomMargin);
    view.setLayoutParams(layoutParams);
}

تأكد من تمكين ربط البيانات لمشروعك:

dataBinding {
    enabled = true
}

في البنية الخاصة بك.

يستحق databinding الوثيقة يستحق القراءة.


هناك بعض الحيل حول هذا ، لكنه لن يكون لطيفًا مثل الحل المقترح ، وهو شيء أريده أيضًا. على سبيل المثال ، يمكنك استخدام paddings تخطيط على ليس فقط العرض (زر في هذه الحالة) ، ولكن يمكنك أيضًا القيام بذلك على أصل العرض (التخطيط مثل LinearLayout / RelativeLayout). يمكنك أيضًا وضع المشاهدات invisibile (يعمل كائن عرض مستقيم في كثير من الأحيان) بأبعاد ثابتة. سيكون مثل

<View
   android:layout_width="1px"
   andoird:layout_height="@dimen/dos" />

لاحظ أن 1 بكسل على ما يرام إذا كنت تريد ضمان أن يتم رسم بكسل واحد فقط لبُعد ، والذي يكون عادة ما تريده إذا كنت تريد استخدام العروض الفارغة للحشو. يقول البعض أن FrameLayout أفضل لاستخدامه في الحشو الفارغة ، ولكن ذلك ينحدر من العرض

في بعض الأحيان ، يمكنك الجمع بين الحشوة وحشوة التخطيط ، ولكن يمكن أن تتسبب في الفوضى وأن يتم اقتصاصها. كما يمكن أن يكون لديك شيء مثل FrameLayout أو LinearLayout يحتوي فقط على طريقة العرض هذه ، واستخدام ذلك لجعل الحشو المضافة


إحدى الحيل لإضافة بسيطة هي استخدام margin + padding.








android xml android-layout