动态添加的RemoteViews上的布局权重(Layout weight)

6

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

//--  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”属性?

请查看此链接:这里 - Android Killer
3个回答

1

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

在您的示例中,newView是RemoteViews类的一个实例,我认为您不能轻易地设置除RemoteViews提供的内容之外的任何内容。

newView.setLayoutParams(layoutParams);

上述方法不起作用,因为它不是RemoteViews的一部分。

就我所知...可能有一些迂回的方法来设置和查找RemoteViews的尺寸和其他layoutParams,但我还没有找到。


1
好的观点,不幸的是似乎没有任何解决方法。LayoutParams不像Integer或String那样是Java类型,因此您也不能使用涉及反射的set*方法。 - Tom

-1

首先您可以像下面这样获取视图参数

layoutParams = newView.getParams();

然后编辑它们 //layoutParams .setThis/setThat 所有你想要做的操作

然后将新参数设置回视图

newView.setLayoutParams(layoutParams);

谢谢,但我似乎无法让它工作,以下行显示错误:codeLinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) newView.getParams();code 有什么想法吗? - 92Jacko
我猜newView不在任何LinearLayout中。 - Lukap

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接