【问题标题】:Resizing/Scaling Down Android Widgets (DatePicker and TimePicker)调整/缩小 Android 小部件(DatePicker 和 TimePicker)
【发布时间】:2010-11-23 22:14:40
【问题描述】:

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

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

我对我自己的自定义小部件持开放态度,但我真的更希望让这个项目尽可能简单和干净,尽可能匹配 Android OS UI,所以使用本机 DatePicker 和 TimePicker 看起来像对我来说是一个合乎逻辑的选择。如果有人知道如何缩小这些小部件而不是裁剪它们,我将不胜感激。

谢谢。

【问题讨论】:

    标签: android android-widget widget


    【解决方案1】:

    这是一个非常糟糕的 hack,但它应该可以工作: 创建一个扩展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;
    }
    
    }
    

    【讨论】:

    • 嗯...非常了不起的是,在某处不存在更好的方法。非常感谢印象的帮助。我很快就会试一试,但我认为这将是我处理的后期代码之一,在其他事情在应用程序中得到更多解决之后。看来值得等了,哈哈……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    相关资源
    最近更新 更多