0

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

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

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

如果用户调整小部件的大小,应该保持纵横比(13*16),并且应该根据新大小调整文本视图的大小。

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

    @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)。

调整小部件大小时如何获得此行为?

梅丁

4

1 回答 1

0

我自己找到了一个解决方案:使用画布(在小部件 android 上绘制画布)并使用 onAppWidgetOptionsChanged 您可以获得正确的尺寸来使用:)

它比使用 xml 布局要复杂一些,但效果很好。

顺便说一句:我在绘制画布时从未使用过固定尺寸,我总是使用诸如 width/10 之类的东西来缩放任何东西。

于 2013-06-27T10:29:11.907 回答