我为 Android 应用程序创建小部件(当然是在 Java 中)。我有从布局创建的经典 RemoteViews(使用布局 ID)
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.view);
我需要编辑或更改视图(通过 id 识别)。在经典视图中很容易,使用 findViewById 函数。
View v = ... //inflate layout R.layout.view
View my = v.findViewById(R.id.myViewId);
processView(my); //filling view
但它在 RemoteViews 中不受支持。可以使用 apply() 获取视图,但是在 processView 和 reapply() 之后我看不到视图的变化。
View v = rv.apply(context, null);
View my = v.findViewById(R.id.myViewId);
processView(my); //this work's fine
rv.reapply(context,my);
其次,更糟糕的选择是从 RemoteViews 获取我需要的视图,处理它,删除旧视图并使用 addView() 添加处理后的新视图。
RemoteViews rv = ...
View my = ... //apply, find and process
//remove old view
RemoteViews rvMy = ... //create RemoteViews from View
rv.addView(rvMy)
但我不知道如何从 View 创建 RemoteViews(有可能吗?)。任何想法如何解决这个问题?