【问题标题】:Layout weight on dynamically added RemoteViews动态添加的 RemoteViews 的布局权重
【发布时间】:2011-11-14 11:14:23
【问题描述】:

在我的小部件中,我使用以下内容将项目 (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”属性?

【问题讨论】:

标签: java android android-layout remoteview


【解决方案1】:

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

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

newView.setLayoutParams(layoutParams);

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

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

【讨论】:

  • 好点,不幸的是似乎没有任何解决方法。 LayoutParams 不是像 Integer 到 String 这样的 Java 类型,因此您也不能使用涉及反射的 set* 方法。
【解决方案2】:

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

layoutParams = newView.getParams();

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

然后将新参数设置回视图

newView.setLayoutParams(layoutParams);

【讨论】:

  • 谢谢,但我似乎无法让它工作,以下行显示错误:codeLinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) newView.getParams();code any想法?
  • 我猜 newView 它不在任何 LinearLayout 中
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2021-01-28
    相关资源
    最近更新 更多