【发布时间】:2015-04-11 01:36:53
【问题描述】:
我的应用显示了一个共有 8 个按钮的小部件。我想让用户可以设置该小部件的样式并自定义按钮下方的 ImageViews 的大小。 目的是让 Button 保持原样,但动态更改 ImageView 的大小。
为此,用户可以设置图标大小,该图标大小以整数形式存储在 SharedPreference 中 iconSize。
如何更改 Widget 中 ImageView 的大小?
目前,ImageViews 是使用 xml 文件中设置的大小创建的。如何使用其他尺寸实现重绘?
我认为这里没有太多代码可以发布,但如有必要,我很乐意这样做,如果您知道哪些代码可以在这里提供帮助,请告诉我。
我不想做的事:
调整整个小部件的大小
创建大量布局文件以根据 iconSize 进行切换
一些代码:
这就是我在我的活动中将 ImageView 大小设置为小部件预览的方式。 icons是一个ImageViews数组,progress是指一个ProgressBar,用来选择iconSize。
for (ImageView icon : icons) {
icon.requestLayout();
// convert into actual Pixels
progress = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_PX,
progress,
getResources().getDisplayMetrics()
);
// set width and height
icon.getLayoutParams().height = progress;
icon.getLayoutParams().width = progress;
sizeText.setText("" + progress);
}
【问题讨论】:
-
让我们假设您不是在应用小部件中执行此操作,而是在活动或片段中执行此操作。
iconSize究竟会控制什么?你会在android:layout_width和android:layout_height设置为wrap_content的情况下拉入不同大小的不同图标吗?您会使用相同的图标,但使用android:layout_width和android:layout_height来控制大小吗?你会做别的事吗?这将有助于我们将您所寻求的效果形象化。 -
@CommonsWare 我编辑了我的问题并添加了代码,以显示活动内部小部件预览中发生的情况。
-
是的,好吧,这就是我害怕的。除了通过构造函数中的初始加载之外,我不知道有什么方法可以影响
RemoteViews中的LayoutParams。 -
@CommonsWare 我找到了一个解决方法,它可能对你也很有趣。
标签: android imageview remoteview