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

时间:2010-11-23 22:14:41

标签: android android-widget widget

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

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

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

感谢。

1 个答案:

答案 0 :(得分:5)

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

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

然后将DatePicker或其他内容添加为此视图的子项。

EG:

 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;
}

}