2012-01-14 38 views
4

は私が持っている:(Android)setVisibility(view.GONE)の後にレイアウトが再描画されませんか?アプリで

LinearLayout linearLayout2 = (LinearLayout) findViewById(R.id.cvLinearLayout2); 

後:私はlinearLayout2バックを持参する方法を見つけることができません

linearLayout2.setVisibility(View.GONE); 

linearLayout2.setVisibility(View.VISIBLE); 
    linearLayout2.bringToFront(); 
    linearLayout2.getParent().requestLayout(); 
    linearLayout2.forceLayout(); 
    linearLayout2.requestLayout(); 
    linearLayout2.invalidate(); 

が、結果なしで:

はすべてをしようとしました。 linearLayout2は、片方の親linearLayout1を持っているので、私も試してみました:

まだ
linearLayout1.requestLayout(); 
    linearLayout1.invalidate(); 

ゼロの結果と。 linearLayout2GONEとなります。 私のアプリでは、linearLayoutを離れてからもう一度やり直す必要があります。助けてください。

+0

最初にGONEへの表示を設定せず、レイアウトが表示されるかどうかを確認してください。 – asenovm

+0

このことは、UNTILで起こりません。あなたが消えて目に見える間に何か間違っていない限り、 linearLayout2に含まれるビューを削除/削除するかどうかを確認してください。いくつかのコードスニペットを投稿してください。 – akkilis

答えて

3

メソッドsetVisibility(View.VISIBLE)例えば

を使用することにより、「戻ってくる」することの能力に影響を及ぼしてはならないGONEにビューの可視性を設定し、私は自分のアプリケーションの一つに、このコードを持っている:

public void onCheckedChanged(CompoundButton checkBox, boolean isChecked{ 
    if(checkBox == usesLocationCheckBox) 
    { 
     View view = findViewById(R.id.eventLocationOptions); 
     if(isChecked) 
     { 
      view.setVisibility(View.VISIBLE); 
      usesTimeCheckBox.setEnabled(false); 
     } 
     if(!isChecked) 
     { 
      view.setVisibility(View.GONE); 
      usesTimeCheckBox.setEnabled(true); 
     } 
    }} 

これは完全に正常に動作します。あなたのプログラムが実行しているいくつかのコードが責任を負う必要があります。関連するコードを使って投稿を編集すると、より良い回答を得ることができます。

+0

huh..codeが大きすぎる:-( setVisibility(View.VISIBLE)で動作していない が、そのシンプル:**私が必要全画面表示機能** touchlayout2が作成された後、タッチイベント(ただしACTION_UP)の後、私はlinearlayout 2(view.GONEを使用)を「削除」する必要があるためフルスクリーンが必要です。とにかく私はそれを行うことができません:-( view.setVisibility(View.INVISIBLE)は私には良いことではありませんが、ビューはまだスペースを占有しています。私は.removeView()のようなものが必要ですが、複雑です... 私は説明することができました... I必要な全画面機能...を削除するビューとデータを返す – smandic

+0

あなたのコードをここに掲載することができますので、あなたの助けを借りることができますか? View.VISIBLEが動作しない理由を知ることができます。 – Garzahd

+0

男たちはちょうど仕事を始めた! 2日後..私はview.setVisibility(View.GONE)以外のすべてを削除しました。 および view.setVisibility(View.VISIBLE); とすべてのものが動作するので、Garzahd U R権利、それは動作する必要があります:-) ありがとう!! – smandic

9

View.GONEは、画面からビューを削除し、ビューが占有する領域は画面上の他のビューに解放されます。したがって、「ゴーン」ビューは元に戻れません。あなたはそれをリロードする必要があります。

スペースを確保したい場合は、View.INVISIBLEを使用できます。これで、ビューは削除されず、ビューが非表示になり、空白が表示されます。

ABCD

B.setVisibility(View.INVISIBLE);を呼び出した後、あなたがあります:シンプルなイラストで

、あなたは次のセットアップ持っ

A CD

をしかしB.setVisibility(View.GONE);を呼び出した後、あなたが取得します:

ACD

+0

tnxしかし、私は解放されたスペースが必要なので、INVISIBLEはまだ "スペース"を保持しています。私はlinearlayoutを離れてしばらくしてからそれを取り戻す必要があります。 これはフルスクリーン機能ですから、しばらくの間は画面全体が必要ですし、しばらくしてからlinearlayout2を取得してください:-) – smandic

+0

'GONE'の後に' LinearLayout linearLayout2 =(LinearLayout)findViewById (R.id.cvLinearLayout2); 'とYourActivity.setLayout(linearLayout2);' –

関連する問題