调整/缩小Android小部件的大小(DatePicker和TimePicker)

Mat*_*t D 2 android widget android-widget

我不确定这是否可行,我找不到基于它的主题,但是如果它已被回答之前给我一个链接,那就是那个.

我现在要做的是调整一些默认的Android小部件,特别是DatePicker和TimePicker,以便在Activity中使用.但据我所知,修改Picker(沿负方向)的宽度或高度的唯一结果是导致裁剪视图,而不是窗口小部件的缩放/拉伸视图.

我对自己的自定义小部件持开放态度,但我真的更喜欢让这个项目尽可能简单和干净,尽可能地匹配Android OS UI,因此使用本机DatePicker和TimePicker似乎是一个合乎逻辑的选择对我来说.如果有人知道如何缩小这些小部件而不是裁剪它们,我真的很感激.

谢谢.

Imp*_*ion 5

这是一个非常糟糕的黑客,但它应该工作:创建一个新的视图扩展LinearLayout,覆盖方法getChildStaticTransformationsetStaticTransformationsEnabled显式true.

在该方法中,getChildStaticTransformation您可以操纵转换参数以缩小扩展LinearLayout的所有内容.

然后添加DatePicker或其他东西作为此视图的孩子.

例如:

 public class ZoomView
    extends LinearLayout
{

private float sf = 1f;

public ZoomView(final Context context, final AttributeSet attrs)
{
    super(context, attrs);
    setStaticTransformationsEnabled(true);
}

public ZoomView(final Context context)
{
    super(context);
    setStaticTransformationsEnabled(true);
}

public void setScaling(final float sf)
{
    this.sf = sf;
}

@Override
protected boolean getChildStaticTransformation(final View child, final Transformation t)
{
    t.clear();
    t.setTransformationType(Transformation.TYPE_MATRIX);
    final Matrix m = t.getMatrix();
    m.setScale(this.sf, this.sf);
    return true;
}

}
Run Code Online (Sandbox Code Playgroud)