Android - 可调整大小的小部件:缩放TextSize并保持宽高比

时间:2013-05-31 20:03:39

标签: java android xml resize widget

我有一个大小为130 * 160dip的小工具。我想制作一个Resizable Widget,我已经添加了android:resizeMode="horizontal|vertical",但由于我的布局是固定大小调整大小不会影响任何东西。

我的布局(我认为这比xml更好:)):

==========LinearLayout===========
=         -TextView-            =
= =LinearLayout= =LinearLayout= =
= =  TextView  = =  TextView  = =
= =  TextView  = =  TextView  = =
= =  TextView  = =  TextView  = =
= =  TextView  = =  TextView  = =
= =  TextView  = =  TextView  = =
= =  TextView  = =  TextView  = =
= ============================= =
=          TextView             =
=================================

如果用户调整窗口小部件的大小,则应保持宽高比(13 * 16),并根据新大小调整textview的大小。

对于我的一项活动,我在扩展的自定义(基于权重)布局中使用了以下内容:

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
            [...]
        int count = getChildCount();
        for (int i = 0; i < count; i++) {
            [...]
        if (child instanceof TextView) {
            ((TextView) child).setTextSize(TypedValue.COMPLEX_UNIT_PX,
                    ch * 7 / 10); //ch=child height 
        }
    }

运行良好,但我不能为窗口小部件使用自定义布局(或TextViews)。

如何在调整Widget大小时获得此行为?

倚天

1 个答案:

答案 0 :(得分:0)

我自己找到了一个解决方案:使用画布(Draw canvas on widget android)和onAppWidgetOptionsChanged你可以得到正确的尺寸:)

它比使用xml-layouts更棘手,但效果非常好。

顺便说一下:我在绘制画布时从未使用固定尺寸,我总是使用宽度/ 10来缩放任何尺寸。