动态添加RemoteViews的布局权重

在我的小部件中,我使用以下内容将项目(R.layout.widget_item)动态添加到我的主要小部件布局中定义的LinearLayout:

//-- Main widget layout RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_design); //-- Add to main layout RemoteViews newView = new RemoteViews(context.getPackageName(), R.layout.widget_item); views.addView(R.id.view_container, newView); 

我的问题是,如何在newView上动态设置“android:layout_weight”属性?

请参阅: http : //developer.android.com/reference/android/widget/RemoteViews.html

您的示例中的newView是RemoteViews类的一个实例,我认为您不能轻松设置RemoteViews提供的内容。

 newView.setLayoutParams(layoutParams); 

以上操作无效,因为它不是RemoteViews的一部分。

据我所知……可能有一些关于设置和查找RemoteViews的尺寸和其他layoutParams的方法,但我还没有找到它。

首先你得到这样的视图参数

 layoutParams = newView.getParams(); 

然后编辑tham // layoutParams .setThis / setThat你要做的各种操作

然后将新参数设置回视图

 newView.setLayoutParams(layoutParams); 

layout_weight是您应用于LinearLayout的LinearLayout.LayoutParams的一部分,而不是LinearLayout本身。 有一个构造函数采用第三个参数表示layout_weight。

http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#weight