2番目の方法は恐ろしいアプローチです(垂直フィールドマネージャーの高さをいじると、多くの問題が発生します)。
最初の方法をもう一度試してみてくださいが、今回は電話してください 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
コンストラクターで)。