给0dp布局宽度的儿童充气重量(以编程方式)

时间:2014-07-16 15:23:56

标签: android android-view android-inflate

简单:我想用一个宽度为0dp的孩子给父母充气。

父xml:

<com.example.KeyPad      // extend LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="4"     // for the children
    android:layout_weight="1" // this is for its parent
    android:clickable="true"
    android:background="@color/MidnightBlue" >

儿童班:

public class KeyButton extends RelativeLayout implements View.OnClickListener{    
    public KeyButton(Context c ) {
        super(c);
        RelativeLayout v = (RelativeLayout) LayoutInflater.from(c).inflate(R.layout.key_button, this, true);    
        }
    }
}

使用R.layout.key_button xml:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:background="@android:color/holo_red_dark"
    android:layout_height="wrap_content">

    <TextView ... />

</RelativeLayout>

孩子正在加入:

Parent.addView(new KeyButton(context) );

问题是android:layout_weight没有采取行动,而且孩子的layout_width保持在&#34; 0dp&#34;。如果我将宽度更改为50dp,我可以看到正确充气的孩子。

还尝试在添加时以编程方式添加参数:

KeyButton bt = new KeyButton(context);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,1.0f);
bt.setLayoutParams(lp);
Parent.addView(bt);

如何以0dp /体重给孩子充气?当然,正如您所看到的,我已经定义了父级的weight_sum。

2 个答案:

答案 0 :(得分:0)

您使用了LinearLayout.LayoutParams,但按钮的父级为RelativeLayout

试试这个:

KeyButton bt = new KeyButton(context);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(0, RelativeLayout.LayoutParams.WRAP_CONTENT,1.0f);
Parent.addView(bt, lp);

答案 1 :(得分:-1)

您可以通过以下代码简单地将visibility属性设置为已删除或隐藏:

bt.setVisibility(View.GONE);

您可以找到有关设置观看次数here

的更多信息