綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] EditText使用setError 破圖問題

[複製連結] 查看: 1028|回覆: 1|好評: 0
跳轉到指定樓層
樓主
jasononlie | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2016-2-25 17:24

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
請教一下各為老師,我使用 Fragment 去呈現頁面
可以看到我的附圖,我在ScrollView裡建立了很多的EditText,
我要對我輸入的資料做驗證,資料輸入錯誤時我會使用EditText.setError
當錯誤的EditText會被設定紅色的驚嘆號和如果onfocus的時候會順便出現訊息
當我把ScrollBar往下拉的時候,Error的訊息會往上跑(這是正常的) 可是它卻會蓋過上方的toolbar這個現像。
求助各為老師該怎麼解決這一塊。

我的code很簡單就是

fragment_xxx.xml :
<RelativeLayout>
<ScrollView>
         <LinearLayout>
                <TableLayout>
                        <TableRow><TextView><EditText></TableRow>
                        <TableRow><TextView><EditText></TableRow>
                        <TableRow><TextView><EditText></TableRow>
                        ....很多個讓ScrollBar可以往下拉
                </TableLayout>
         </LinearLayout>
</ScrollView>
</RelativeLayout>
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
 樓主| jasononlie | 收聽TA | 只看該作者
發表於 2016-2-26 11:36
本帖最後由 jasononlie 於 2016-2-26 11:53 編輯

沒什麼大神可以幫助我,我自己研究了一些解決方式,有機會幫助到大家的話,大家就加減參考囉。
爬了很多文,也有許多人與到我一樣的問題,大家普遍認為是BUG,等官方修復或忽略它的方式。
我想了一下 如果再onFocus的情況下會跳出錯誤訊息那我就使用Scroll往上滾滾到因該消失的時候取消該EditView得Focus.

已下是我的代碼 : 我使用在Fragment中:
首先介紹一下 我的ScrollView中有14個EditView.

public ScrollView sv;

public View onCreateView( ....)
{
        sv = (ScrollView)view.findViewById(R.id.scrollViewtest);

        sv.setOnTouchListener(new View.OnTouchListener() {
            public int TotalH=0;
            public int oneH=0;
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                if(TotalH==0) TotalH = v.getHeight();    //取總長
                if(oneH==0) oneH = TotalH/14;             //14 = Number Of EditView about this page. ,每一個EditView的長度

                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN : //Scroller被按下
                        break;
                    case MotionEvent.ACTION_MOVE : //Scroller被移動
                        //getScrollY()會取rollBar頂端的位座標
                        int nowPostion = v.getScrollY()/oneH;   //nowPostion 表示說滾動條滾掉到第幾個EditView的底端了
                        for(int i=0;i<nowPostion;i++)
                        {
                            //當移動得時候,判斷移動到哪邊 再對已經滾到看不見的EditView取消Focus
                            //我假設editText[14]這樣來表示。
                            editText.clearFocus();
                        }
                        break;
                    case MotionEvent.ACTION_UP: //Scroller被結束一次滑的動作
                        break;
                    default :
                        break;
                }

                return  false;
            }
        });
}

這Code很陽春如果有幫到其他人就加減參考了,如果有高手有此問題的解答,還懇請教學。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則