1

こんにちは、ボタン、テキストビューなどを含む相対レイアウトから構築された一連のボタンをセットアップしました(十分に膨らませました)。ボタンセット全体を削除/非表示/削除する機能が必要です。RelativeLayoutでできると思いますが、setVisibility(View.GONE)このレイアウトをどのように参照すればよいかわかりません。IDを設定したのですが、参照しようとすると本当に迷ってしまいます。このコードを開始するボタンは削除ボタンであるため、OnClick(View v) には削除ボタンの ID が含まれています。getparent を試しましたが、うまくいきませんでした (クラッシュ)。

誰かが私を正しい方向に向けることができますか?

ここで私が試したgetparentコード。

            RelativeLayout dropping = (RelativeLayout) ((Activity) v.getParent()).findViewById(R.id.tp_container);
            dropping.setVisibility(View.GONE);

可能であれば、idを別の変数で表現できる場所で、このようなことを望んでいましたか?

relativeViewVariable.id(actualId).setVisibility(View.GONE);

これはかなり恥ずかしいですが、これが Java なのか Android なのかわかりません。

乾杯

4

5 に答える 5

2

ビューを動的に作成する場合は、カスタム ID を設定してから、その ID を持つビューをその親から取得する必要があります。.

View textView;
RelativeLayout layout = new RelativeLayout (this);
setContentView(layout);

for(int i=0;i<10;i++){
        textView = new TextView(this);
        textView.setId(i);
        layout.addView(textView);
}

/* FOR LOOP THAT ONE */
TextView referencedTextView = (TextView) layout.findViewById(5);
referencedTextView.setVisibility(View.GONE);

レイアウトからすべてのボタンを非表示にするだけの場合は、すべての親ビューを反復処理できます。

LinearLayout layout;
        View view;
        for (int i = 0; i < layout.getChildCount(); i++) {
            if(layout.getChildAt(i) instanceof Button){
                ((Button)layout.getChildAt(i)).setVisibility(View.GONE);
            }

        }
于 2012-04-04T11:02:54.433 に答える
0

RelativeLayout 内に childViews の ID がある場合、これを行うことが非常に可能です。

dropping.findViewByID(R.id.ids).setVisibility(View.GONE)
dropping.removeView(dropping.findViewByID(R.id.ids))

等々..

于 2012-04-04T10:53:56.607 に答える
0
View menu; //Declaration
View app; //Declaration

体の部位

final View[] children = new View[] { menu, app };

    public void initViews(View[] children)
    {
        // A ViewGroup MUST be the only child of the HSV
        ViewGroup parent = (ViewGroup) getChildAt(0);

        if(Your Condition)
        {
        children[i].setVisibility(View.INVISIBLE);
        parent.addView(children[i]);
        }       
    }

私は自分のアプリでこの種の作業を行いました。上記の関数で独自の条件を作成し、それを機能させてください。

于 2012-04-04T11:02:50.790 に答える
0

もちろんそれはアンドロイドの質問です

最初にレイアウトを膨らませたので、その瞬間は一度だけ作成されます。

ループ インフレート レイアウトを使用して 5 つのレイアウトを作成し、そのすべての ID が同じままであるとします (これは、ビューが複数回作成する場合に当てはまります)。

質問で説明したい場合は、動的にレイアウトを作成する必要があります

Java ファイルで使用します。お気に入り

for(int i = 0 ; i < 10  ;  i ++)
{
  RelativeLayout layout = new RelativeLayout(context);  
}

その後、レイアウトまたはレイアウト コンポーネントごとに新しいレイアウト ID が作成されます。

于 2012-04-04T11:03:57.683 に答える
0

ViewGroup を使用して一連のビューを作成します。ここでは、ViewGroup が基本クラスになります。ViewGroup の可視性を GONE に設定すると、子ビューに設定されます。

于 2012-04-04T10:55:02.567 に答える