问题
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?
回答1:
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.
回答2:
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);
回答3:
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
来源:https://stackoverflow.com/questions/7373501/layout-weight-on-dynamically-added-remoteviews