Android addrule(RelativeLayout.BELOW)无法正确呈现

时间:2016-09-21 08:06:42

标签: android android-layout

public void onCheckboxClicked(View view) {
    CheckBox checkBox = (CheckBox) view;
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.BELOW, checkBox.getId());

    LinearLayout li = (LinearLayout) findViewById(R.id.checkbox_layout);
    EditText ed = new EditText(RegisterActivity.this);
    ed.setLayoutParams(params);

    li.addView(ed);
}

这是我在活动文件中的代码

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>

<LinearLayout
    android:id="@+id/checkbox_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <CheckBox
        android:id="@+id/hsc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="onCheckboxClicked"
        android:text="HSC"
        android:textSize="15sp" />

    <CheckBox
        android:id="@+id/ielts"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:onClick="onCheckboxClicked"
        android:text="IELTS"
        android:textSize="15sp" />

    <CheckBox
        android:id="@+id/toefl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:onClick="onCheckboxClicked"
        android:text="TOEFL"
        android:textSize="15sp" />


</LinearLayout>

这是我的xml布局文件

我只想动态地在“已选中”复选框下方添加Edittext,但是当我运行此代码时,Edittext将添加到Linearlayout的底部...

如何在复选框下方添加?

1 个答案:

答案 0 :(得分:0)

这是因为您尝试设置RelativeLayout.LayoutParams并将View添加到LinearLayout。 LinearLayout忽略RelativeLayout

的特定字段

如果您想添加View after复选框您需要知道复选框的位置,然后使用this方法放置新的View。