どのように私はAndroidの中で私のSlidingDrawer背後にビューを無効にすることができますか?

? Sara @ | Original: StackOverFlow
---

私は、画面の下からポップアップ表示し、画面の約80%を満たすSlidingDrawerを持っている。 SlidingDrawerビューにフォーカスがあるにもかかわらず、それは項目、ボタンやSlidingDrawerの後ろにあるビュー内の他の要素をクリックすることも可能です。 SlidingDrawerがアクティブの場合/焦点が合って、私はそれがクリックやタッチを受け取ることができなくなりますので、その背後にビュー全体を無効にしたい/プルアップされています。ビュー全体を無効にするには良い方法はありますか?私は(偽)とsetClickable (偽) setEnableを試してみましたが、それらのどちらも動作します。

Help?

---

Top 5 答え

1synic @

これが動作するかどうかは知りませんが、それは試してみる価値はあります。コール  http://developer.android.com/intl/zh-CN/reference/android/view/ViewGroup.html#setDescendantFocusability%28int%29あなたのコンテナビュー(スライド引き出しが上をスライド1 )に。

2Joe... @

内容を保持しているのLinearLayoutをつかむと、クリックリスナーを追加 - ここでは、この問題を(私もソリューションが必要)を回避する方法です。これは、それがスライディング引き出し、以下のビューに伝播停止する - - それは私のために動作します - そしてそれは引き出しの中に他の項目をブロックしない、クリックリスナーが(捨てる、何でも)クリックに応答がある。

3kellogs @

ジョーの答えは私のためにトリックをしませんでした。私のシナリオでは、ビットの通常とは異なるものである。私は二人の子供を持つでframeLayoutを持っている。唯一の子供の一つは、所与の瞬間に「アクティブ」である必要があり、第二がアクティブである間に最初はもはや入力を処理してはならない。私の解決策:

    public static void changeVGstate(ViewGroup current, boolean enable)
{
    current.setFocusable(enable);
    current.setClickable(enable);
    current.setEnabled(enable);

    for (int i = 0; i < current.getChildCount(); i++)
    {
        View v = current.getChildAt(i); 
        if (v instanceof ViewGroup)
            changeVGstate((ViewGroup)v, enable);
        else
        {
            v.setFocusable(enable);
            v.setClickable(enable);
            v.setEnabled(enable);
        }
    }
}

Enjoy!

4Tuan Anh @

私は「 ____ 」ではなく、 「 ____ 」の「 __ 」入れてみました。そして、セット 「 ____ 」オープニング方法で。

だから私は、これが解決策になるかもしれないと思う。