以编程方式创建组件时的Android layout_weight

时间:2011-09-30 20:18:53

标签: android android-layout

我已经阅读了很多问题,说问题是layout_width = 0dip,但我已经尝试过了,并且无法使其发挥作用。

我有这个持有人:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:id="@+id/linearLayout1"
    android:orientation="horizontal"
    android:weightSum="3"
    android:padding="10dip"
    android:fadingEdge="none"
    android:background="@drawable/bg_filters">
</LinearLayout>

这部分:

<Button
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:layout_width="0dip"
    android:layout_height="40dip"
    android:padding="4dip"
    android:gravity="center"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:layout_marginRight="15dip"
    android:background="@drawable/bg_filter_bt_active"
    android:textColor="@color/app_color_all">
</Button>

但我的观看'按钮显示仍然显示在左侧... 有没有一种方法我应该叫持有人重新计算其子女的权重?

请记住,我是以编程方式创建的。

谢谢!

编辑:

我已经有了这个组合的屏幕:

##################################
#                                #
#  Button  |  Button  |  Button  #
#                                #

使用那个确切的XML,但它不是以编程方式创建的,而是已经存在于XML中。它运作得很好。

当我以编程方式创建相同的设置时,我得到了这个:

##################################
#                                #
# Button | Button | Button       #
#                                #

按钮将自己对齐到左侧,即使重量也应均匀分布。 我需要调用LinearLayout来计算权重并更正视图吗?

编辑2:

我刚刚尝试使用相同的LinearLayout并在常规XML中插入相同的Button 3次。它显示就像它应该。这绝对与以编程方式创建持有者和3个按钮有关。

2 个答案:

答案 0 :(得分:0)

检查你的进口!我有同样的问题,事实证明我导入了错误的LayoutParams。我正在导入android.widget.AbsListView,而不是android.widget.LinearLayout.LayoutParams以及造成问题的原因。

答案 1 :(得分:0)

您是否尝试通过invalidate()或refreshDrawableState()强制视图重绘自身?
你能以编程方式发布创建这些按钮的代码吗?