Within my widget, i'm using the following to dynamically add items (R.layout.widget_item) to a LinearLayout defined within my main widget layout:
//-- 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);
My question is, how can I dynamically set the "android:layout_weight" attribute on the newView?
See: http://developer.android.com/reference/android/widget/RemoteViews.html
newView in your example is an instance of class RemoteViews and I don't think you can easily set anything above and beyond what RemoteViews provides.
newView.setLayoutParams(layoutParams);
The above will not work because it's not part of RemoteViews.
As far as I can see... there may be some round about way of setting and finding dimensions and other layoutParams of RemoteViews, but I haven't found it yet.
first you get the view params like this
layoutParams = newView.getParams();
then edit tham //layoutParams .setThis/setThat all kinds of manipulations you want to do
and then set the new params back to the view
newView.setLayoutParams(layoutParams);
layout_weight is part of the LinearLayout.LayoutParams that you apply to a the LinearLayout, not the LinearLayout itself. There's a constructor that takes a third param representing the layout_weight.
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#weight
精彩评论