求問各位大神關於fragment切換,軟鍵盤隱藏的問題

============問題描述============android


問題背景,一個頂層linearlayout下面有個兩個子linearlayout,第一個子linearlayout裏面給一排button,能夠水平滑動,第二個子linearlayout裏面用來放fragment,xml以下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/screen" >
    <LinearLayout
        android:id="@+id/top"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="#ffff00"
                android:orientation="horizontal" >
                <Button
                    android:id="@+id/button1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
                <Button
                    android:id="@+id/button2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
            </LinearLayout>
        </HorizontalScrollView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/center"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:orientation="vertical" >
    </LinearLayout>
</linearlayout>
默認載入一個fragment,裏面放幾個edittext,用於輸入一些信息。在mainactivity裏面給頂級linearlayout註冊一個ontouchlistener:
 screen.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                // TODO Auto-generated method stub
                InputMethodManager imm = (InputMethodManager)VillageActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(screen.getWindowToken(), 0);
                //imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);   
                return false;
            }
        });
同時給幾個button註冊click事件,點擊不一樣button切換不一樣fragment,fragment裏面也都是一些edittext。

問題是:
一、當程序開始運行,載入默認fragment後,光標會停留在第一個edittext中,點擊這個edittext,輸入框會調出,點擊空白處,輸入框消失。可是當上方按鈕後,首先輸入框沒有隱藏掉,在點擊空白處,也沒有隱藏。。這是爲何?觀察後發現,當點擊上方按鈕後,edittext中的光標已消失,這個時候焦點集中在button上。。難道輸入框的隱藏,前提是當前焦點必須在edittext上?
二、當點擊其餘按鈕,切換到其餘fragment後,這個screen的ontouchlistener徹底失效,這又是爲啥呢?按道理無論第二個子linearlayout裏面換什麼fragment,都是屬於頂級linearlayout的啊,只要監聽頂級linearlayout的事件,應該均可以捕獲到啊。。

求各位大神解答。。

============解決方案1============ide


http://blog.csdn.net/yskang/article/details/39012127

============解決方案2============this

看着頭都昏了,把這個setOnTouchListener寫進父類fragment裏面把,而後子fragment繼承他
相關文章
相關標籤/搜索