6

私は3つのレイアウトを持っています。ボタンをクリックすると特定のレイアウトにアクセスし、広告からコントロールを削除する必要があり、それを達成する方法があれば、これが私が使用するコードです

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

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.20"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/backbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Back" />

        <Button
            android:id="@+id/backbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="next" />
    </LinearLayout>
    <!-- the two columns part -->

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="0.80"
        android:orientation="horizontal" >

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="0.80" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="First Name" />
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="0.20" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="second Name" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>
4

4 に答える 4

21

Androidで親からビューを削除します。

View myView = findViewById(R.id.my_view);
ViewGroup parent = (ViewGroup) myView.getParent();
parent.removeView(myView);

Androidはすべての子ビューを削除します:

LinearLayout formLayout = (LinearLayout)findViewById(R.id.formLayout);
formLayout.removeAllViews();

Androidの親にビューを追加します。

Button myButton = new Button(getApplicationContext());
myButton.setLayoutParameters(new LinearLayout.LayoutParams(
                                     LinearLayout.LayoutParams.FILL_PARENT,
                                     LinearLayout.LayoutParams.FILL_PARENT));

myLayout.addView(myButton);

使用できます:

LinearLayout.LayoutParams.FILL_PARENT

また

LinearLayout.LayoutParams.WRAP_CONTENT
于 2012-05-09T12:11:59.357 に答える
2

その後、メソッドandoird:id="@+id/linerlayout_1"を使用してコード内でこのビューに簡単にアクセスできますfindviewbyid()

例: これをボタンの onclicklistener メソッド内に配置します。

LinearLayout ll = (LinearLayout) findViewById(R.id.linerlayout);
ll.setVisibility(View.GONE); // this row will hide the entire linerlayout
ll.addView(someView); //this row will add the specified View f.e.: TextView
ll.removeView(otherView); // this row will remove the view

また、xml 属性でビューの可視性を管理することもできますandroid:visibility

于 2012-05-09T12:03:45.787 に答える
1

View クラスの setVisibility メソッドを見てください。これにより、UI からビューを非常に簡単に表示または非表示にすることができます。

ボタンのクリック リスナーに追加view.setVisibility(View.GONE)するだけで、レイアウトやウィジェットを削除できます。呼び出すことで再表示できますview.setVisibility(View.VISIBLE)

于 2012-05-09T12:01:45.380 に答える
0

ビューを動的に追加または削除するサンプル:

TextView tv = new TextView(this);

        tv.setWidth(LayoutParams.WRAP_CONTENT);

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
        params.gravity = Gravity.RIGHT;
        tv.setLayoutParams(params);
        tv.setTextAppearance(this, R.style.darkTextNormal);
        tv.setBackgroundResource(R.color.lightBlue);
        tv.setTextSize(16);

yourLinearLayout.addView(tv);

// また

yourLinearLayout.removeView(tv);
于 2012-05-09T12:00:36.600 に答える