الطريقة الثانية هي نهج فظيع (العبث مع ارتفاع VerticalfieldManager سيحصل على الكثير من المشاكل).
جرب الطريقة الأولى مرة أخرى ، ولكن هذه المرة اتصل super.layout
أول:
DateField dtf = new DateField(label, defaultDateTime, DateField.DATE_TIME | DrawStyle.LEFT | DrawStyle.TOP | Field.FOCUSABLE | Field.READONLY )
{
protected void layout(int width, int height) {
super.layout(width, height);
Bitmap bmp = UIElements.GetBitmap(UIElements.IMG_DROPDOWN_BG, true);
width = bmp.getWidth();
height = bmp.getHeight();
super.setExtent(width, height);
}
};
لاحظ أنه باستخدام هذا النهج ، قد تحصل أيضًا على مواطن الخلل ، لأنك تتجاوز طريقة عمياء دون النظر في بقية الفصل. للقيام بذلك بأمان ، ستحتاج إلى الوصول إلى مصدر الفئة الأصل ، ولا تفعل ذلك.
أود أن أقترح تمديد HorizontalFieldManager
(تجاوز sublayout
) للحصول على ارتفاع ثابت (لا تقم أبدًا VFM لأن التمرير يسير في نفس الاتجاه الذي تحاول إجراء ثابت). ثم ضع داخل حقل تاريخ عادي يستخدم جميع الارتفاع المتاح (تمرير العلم Field.USE_ALL_HEIGHT
في المنشئ).
مزيد من المعلومات:http://docs.blackberry.com/es-es/developers/deliverables/29251/determining_the_dimensions_of_a_field_157864_11.jsp