ScrollView 嵌套 EditText搶占焦點問題

場景描述:
ScrollView 的布局超過一個屏幕大小麦箍,其中有一個 EditText 在靠近底部的位置料皇,這樣漩勤,我們在這個 EditText 上輸入內(nèi)容時具篇,向上滑動 ScrollView拳氢,由于焦點還在這個 EditText 上募逞,所以,會出現(xiàn)我們向上滑動結(jié)束后馋评,會自動下滑到這個 EditText 情況放接。
解決方案:

  1. API 23 以上有 setOnScrollChangeListener() 可以調(diào)用,但是不兼容低版本留特,我們可以重寫 ScrollView 的 computeScroll()方法纠脾,
    或者重寫 View 的 onScrollChanged()方法, 設(shè)置滑動監(jiān)聽蜕青,來實現(xiàn)對滑動距離的監(jiān)聽苟蹈。
  1. 重寫 computeScroll()
public class MyScrollView extends ScrollView {

    private OnScrollListener listener;

    /**
     * 設(shè)置滑動距離監(jiān)聽器
     */
    public void setOnScrollListener(OnScrollListener listener) {
        this.listener = listener;
    }

    public MyScrollView(Context context) {
        super(context);
    }

    public MyScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    // 滑動距離監(jiān)聽器
    public interface OnScrollListener{

        /**
         * 在滑動的時候調(diào)用,scrollY為已滑動的距離
         */
        void onScroll(int scrollY);
    }

    @Override
    public void computeScroll() {
        super.computeScroll();
        if(listener!=null){
            listener.onScroll(getScrollY());
        }
    }
}
  1. 重寫 onScrollChanged()
public class MyScrollView extends ScrollView {

    private OnScrollListener listener;

    public void setOnScrollListener(OnScrollListener listener) {
        this.listener = listener;
    }

    public MyScrollView(Context context) {
        super(context);
    }

    public MyScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public interface OnScrollListener{
        void onScroll(int scrollY);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if(listener != null){
            listener.onScroll(t);
        }
    }
}

2.有了滑動監(jiān)聽后右核,需要知道什么時候清除 EditText 的焦點汉操,我們可以在 這個 EditText 處在屏幕不可見位置時候,去清除焦點蒙兰。

Point p = new Point();
getWindowManager().getDefaultDisplay().getSize(p);
int screenWidth = p.x;
int screenHeight = p.y;
final Rect rect = new Rect(0, 0, screenWidth, screenHeight);
int[] location = new int[2];
edt_validate_code.getLocationInWindow(location);
scroll_view.setOnScrollListener(new MyScrollView.OnScrollListener() {
    @Override
    public void onScroll(int scrollY) {
        if (edt_validate_code.getLocalVisibleRect(rect)) {
            // 控件在屏幕可見區(qū)域
        } else {
            // 控件已不在屏幕可見區(qū)域磷瘤,清除焦點
            edt_validate_code.clearFocus();
        }
    }
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芒篷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子采缚,更是在濱河造成了極大的恐慌针炉,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扳抽,死亡現(xiàn)場離奇詭異篡帕,居然都是意外死亡,警方通過查閱死者的電腦和手機贸呢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門镰烧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人楞陷,你說我怎么就攤上這事怔鳖。” “怎么了固蛾?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵结执,是天一觀的道長。 經(jīng)常有香客問我艾凯,道長献幔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任趾诗,我火速辦了婚禮蜡感,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恃泪。我一直安慰自己郑兴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布悟泵。 她就那樣靜靜地躺著杈笔,像睡著了一般闪水。 火紅的嫁衣襯著肌膚如雪糕非。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天球榆,我揣著相機與錄音朽肥,去河邊找鬼。 笑死持钉,一個胖子當(dāng)著我的面吹牛衡招,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播每强,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼始腾,長吁一口氣:“原來是場噩夢啊……” “哼州刽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浪箭,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤穗椅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后奶栖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匹表,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年宣鄙,在試婚紗的時候發(fā)現(xiàn)自己被綠了袍镀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡冻晤,死狀恐怖苇羡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情明也,我是刑警寧澤宣虾,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站温数,受9級特大地震影響绣硝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撑刺,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一鹉胖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧够傍,春花似錦甫菠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至安聘,卻和暖如春痰洒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浴韭。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工丘喻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人念颈。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓泉粉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嗡靡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容