我不确定这是否可行,而且我找不到基于它的主题,但是如果它已被回答之前给我一个链接,那就是那个。
我现在要做的是调整一些默认的Android小部件,特别是DatePicker和TimePicker,以便在Activity中使用。但据我所知,修改Picker(沿负方向)的宽度或高度的唯一结果是导致裁剪视图,而不是窗口小部件的缩放/拉伸视图。
我对自己的自定义小部件持开放态度,但我真的更喜欢让这个项目尽可能简单和干净,尽可能地匹配Android OS UI,因此使用本机DatePicker和TimePicker似乎对我来说是个合理的选择。如果有人知道如何缩小这些小部件而不是裁剪它们,我真的很感激。
感谢。
答案 0 :(得分:5)
这是一个非常糟糕的黑客,但它应该工作:
创建一个展开LinearLayout
的新视图,将方法getChildStaticTransformation
和setStaticTransformationsEnabled
显式覆盖到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;
}
}