我的主屏幕小部件中有一个ImageButton。 当用户调整窗口小部件的大小但保持完美圆形时,它应该变大或变小。

以下代码似乎可以在模拟器上工作,但在某些手机上,圆圈仍然是椭圆形的(可能比宽度高10%)。 我使用填充是因为我还没有找到一种在代码中设置远程视图大小的方法。 谢谢。

AppWidgetProvider:

@Override

public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) {

...

onUpdate(context, appWidgetManager, new int[]{appWidgetId});

}

@Override

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

Bundle options = appWidgetManager.getAppWidgetOptions(myIds[id]);

int minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);

int minHeight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);

int width = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, minWidth, context.getResources().getDisplayMetrics()));

int height = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, minHeight, context.getResources().getDisplayMetrics()));

views.setViewPadding(R.id.image_button,0, (height-width)/2,0,(height-width)/2);

...

widget.xml:

android:id="@+id/llWidget"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/image_button"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:src="@drawable/widget_button"

android:visibility="visible"

android:background="@drawable/widget_button"

android:elevation="2dp"/>

android:id="@+id/textView2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:text=""

android:elevation="2dp"

android:textAllCaps="true"/>

widget_button.xml:

android:color="?android:colorControlHighlight">

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐