当我尝试以编程方式放置视图时,为什么RelativeLayout.BELOW不起作用?

时间:2017-01-12 11:37:02

标签: android android-layout android-relativelayout

这是第二个Tab的xml代码。

fragmentTwo.xml

<RelativeLayout 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"
tools:context="com.example.nirvan.diary30.Tab2">

<!-- TODO: Update blank fragment layout -->
<!-- <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Tab2"
     android:layout_centerInParent="true"/>  -->

<Button
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="SAVE"
    android:id="@+id/saveButton"
    android:layout_marginTop="10dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="69dp"
    android:layout_marginStart="69dp" />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/text"
    android:text="default"
    android:layout_marginTop="167dp"
     />



<Button
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="IMG"
    android:layout_marginTop="10dp"
    android:id="@+id/imgButton"
    android:layout_toRightOf="@+id/saveButton"
    android:layout_toEndOf="@+id/saveButton"
    android:layout_marginLeft="99dp"
    android:layout_marginStart="99dp" />
</RelativeLayout>

以下代码位于mainActivity.java我在textVar类中声明了变量textTab2,并在onCreateView()方法Tab2中定义了它们{1}}。应该发生的是,每按一次imgButton,新的editText应该出现在旧的editText下面。为此,我使用了relativeParams。但是,这种情况并没有发生。第一次点击时,新的editText会出现在屏幕顶部。第二次点击时,新editText出现在前一个下方,所有后续文本出现在另一个下面。唯一的问题是,要显示的第一个editText不会显示在原始editText下方,而是显示在屏幕顶部。因此以下行不起作用。我该如何解决这个问题?

relativeParams.addRule(RelativeLayout.BELOW, Tab2.text.getId());

mainActivity.java

            //imgButton
            View.OnClickListener imgButtonClickListener=new View.OnClickListener()
            {
                @Override

                public void onClick(View view)
                {
                    RelativeLayout relativeLayout=(RelativeLayout) findViewById(R.id.relativeLayout);
                    RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams
                            (RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                    if(Tab2.textVar != null)
                    {
                        relativeParams.addRule(RelativeLayout.BELOW, Tab2.textVar.getId());
                    } else {
                        relativeParams.addRule(RelativeLayout.BELOW, Tab2.text.getId());
                    }

                    Tab2.textVar=new EditText(MainActivity.this);
                    Tab2.textVar.setId(id++);
                    Tab2.textVar.setText("NEW");


                    relativeLayout.addView(Tab2.textVar, relativeParams);
                }
            };

            Tab2.imgButton.setOnClickListener(imgButtonClickListener);
            //

0 个答案:

没有答案