0

動的に配置されたビューの重なりを避ける方法は?

私は RelativeLayout を持っており、特定の位置(x、y座標)に動的に(実行時に)ビューを追加していますが、問題はビューが重なっているということです。これを回避する方法。

前もって感謝します。ここに画像の説明を入力

    <ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >


        <RelativeLayout
            android:id="@+id/rl_main"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
        </RelativeLayout>
         <LinearLayout
    android:layout_width="fill_parent"
    android:id="@+id/ll_mainBottom"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    </LinearLayout>

        </LinearLayout>
       </ScrollView>

javaコード

 ll_main = (RelativeLayout) findViewById(R.id.rl_main);

            if (views[3].equals("textView")) {


                TextView tv_new = new TextView(TenMinActivity.this);
                // location
                int x = Integer.parseInt(views[12]);
                int y = Integer.parseInt(views[13]);

                String bgColor = "#" + views[4];
                String fgColor = "#" + Views[5];

            tv_new.setBackgroundColor(Color.parseColor(bgColor)); // Bg Color
        tv_new.setTextColor(Color.parseColor(fgColor)); // Text color


                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            width, android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
    params.leftMargin = x;
    params.topMargin = y;

                ll_main.addView(tv_new, params);
}else if(views[3].equals("edittext")){

    ....

}
4

4 に答える 4

1

与える

android:paddingLeft=""

画面の一番左にある要素に少しのスペースができるように、各要素に。そして右のものは、与えます

android:paddingBottom=""

最初に、名前のテキストである最初の 2 つの要素とテキスト フィールドを確認してから、残りの部分に進むことができます。

コードを投稿していただければ、より適切にご案内できます

これをチェックして、

<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=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="Name"
        android:textSize="18sp" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="21dp"
        android:layout_toRightOf="@+id/textView1"
        android:ems="10"
        android:padding="10dp"
        android:paddingl="10dp" >

        <requestFocus />
    </EditText>

</RelativeLayout>
于 2013-05-15T05:23:51.767 に答える
0

コンテナ相対レイアウトにビューを追加するときは、layout_below layout_above toRightof や ToLeftof などのレイアウト パラメータを使用してください。

https://stackoverflow.com/a/5191159/1911784

于 2013-05-15T06:24:07.110 に答える
0

レイアウトがどのように機能するかを学ぶ必要があります。まず、xml で同じレイアウトを作成してみてください。すると、このようなレイアウトが を使用して簡単に作成できることがわかりますLinearLayout

LinearLayoutを使用して、それにサブレイアウトを追加できます。LinearLayoutすべてのサブビューを使用すると、垂直に表示されます。1つずつ追加しているため、縦に表示されます。a にRelativeLayoutand を追加し、それを に追加するとTextView、目的の結果が得られます。EditTextRelativeLayoutLinearLayout

<LinearLayout>
    <RelativeLayout>
        <TextView />
        <EditText />//use layout_margin or layout_toLeftOf for moving to to right
    </RelativeLayout>

    <RelativeLayout>
        <TextView/>
        <EditText/>
    </RelativeLayout>
</LinearLayout> 
于 2013-05-15T05:31:47.037 に答える