2012-04-19 8 views
4

Androidで開発するのが初めてです。私はLinearLayoutに含まれているグリッドを持っており、グリッドを構成する各アイテムはボタンです。ユーザーがこれらのボタンのどれかを押したときにこのLinearLayoutを非表示にします。SetVisibilityは機能しませんか?

これは私の「ホーム」レイアウトシェルです:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> 
    <TextView/> 
    <LinearLayout> //<-- this is the layout I want to hide 
    <TextView/> 
    <GridView/> 
    </LinearLayout> 
</LinearLayout> 

そして、これは私がMyArrayAdapterに設定したのonClickメソッドです(ボタンを膨張させるために使用)

@Override 
public void onClick(View v) { 
    View convertView = activity.getLayoutInflater().inflate(R.layout.layout_home, null); 
    LinearLayout ll_options = (LinearLayout) convertView.findViewById(R.id.ll_options); 
    ll_options.setVisibility(View.INVISIBLE); 
} 

私はそれを考えます私はそれを試しても何も起こらない。

私は同様の質問を見つけましたが、私の問題は解決しません。

答えて

8

なぜあなたはここにレイアウトを膨らませている?:

View convertView = activity.getLayoutInflater().inflate(R.layout.layout_home, null); 

をジャストん:あなたはそこにそれを追加するまで見えるビュー階層にない新しいビューを作成

View v = activity.findViewById(R.id.ll_options); 
v.setVisibility(View.INVISIBLE); 
+0

すべての綱渡りは、間違いだった。速いアンワースありがとう! – dnaranjo

0

EDIT:あなたのボタンが

のですか?それは同じレイアウトファイルにありますか? 新しいレイアウトをに展開してそこにLinearLayoutを隠しますが、この新しいレイアウトは使用されません。リスナー内のcontentViewにアクセスできることを確認してください。

2

、およびあなたはそれを隠す。だから、目に見えないものを隠す。

代わりに、試してみてください。IMO

@Override 
public void onClick(View v) { 
    findViewById(R.id.ll_options).setVisibility(View.INVISIBLE); 
} 

動くはずです。表示されている(グローバル)ビュー階層内のアクティビティのll_optionsビューを検索し、そのビューを非表示にします。

+0

これは正しいですが、実際にはアプリケーションに応じて 'View.INVISIBLE'に' View.GONE'を優先することができます。 – mlc

+0

ええ、あなたがビューから取ったスペースを解放する(GONE)か、それを隠すだけでそれを隠すか(非表示)に応じて、ビューから見えるものと見えないものの間で変更すると、階層は変更されません – zapl

関連する問題