我有一个大小为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大小时获得此行为?
倚天
答案 0 :(得分:0)
我自己找到了一个解决方案:使用画布(Draw canvas on widget android)和onAppWidgetOptionsChanged你可以得到正确的尺寸:)
它比使用xml-layouts更棘手,但效果非常好。
顺便说一下:我在绘制画布时从未使用固定尺寸,我总是使用宽度/ 10来缩放任何尺寸。