近期項(xiàng)目中用到EditText段审,在Android7.0系統(tǒng)的手機(jī)上發(fā)現(xiàn)EditText上出現(xiàn)兩個(gè)Cursor(光標(biāo))抑钟,但是在5.0妹懒、6.0和8.0手機(jī)上不會(huì)出現(xiàn)這樣的問題雀监,具體的現(xiàn)象如下:
?
經(jīng)各種測試發(fā)現(xiàn),只有在一下情況下才會(huì)出現(xiàn)雙光標(biāo)的現(xiàn)象:
1.Application的樣式設(shè)置成
android:theme="@android:style/Theme.Light.NoTitleBar"
或者android:theme="@android:style/Theme.Light" 會(huì)出現(xiàn)雙光標(biāo);
2.EditText的高度設(shè)置成了 match_parent會(huì)出現(xiàn)雙光標(biāo)会前,若設(shè)置 wrap_content 和固定的值好乐,則不能復(fù)現(xiàn);
3.EditText的android:gravity屬性設(shè)置成 center_vertical瓦宜,即使不設(shè)置這個(gè)屬性蔚万,系統(tǒng)默認(rèn)值也是 center_vertical,此時(shí)也會(huì)出現(xiàn)雙光標(biāo)的問題临庇;
4.EditText 不設(shè)置android:paddingLeft屬性會(huì)出現(xiàn)雙光標(biāo)反璃,當(dāng)設(shè)置了paddingLeft后就不會(huì)出現(xiàn)了。
目前總結(jié)了以上四種情況下假夺,在Android7.0手機(jī)上會(huì)出現(xiàn)雙光標(biāo)淮蜈。那么下面就出具四種解決方案:
1.將Application的主題設(shè)置成別的樣式,比如application默認(rèn)的 android:theme="@style/AppTheme"已卷;
2.將EditText的高度設(shè)置成自適應(yīng) wrap_content或者一個(gè)固定的值梧田;
3.將EditText的android:gravity屬性設(shè)置成除 center_vertical以外的屬性;
4.設(shè)置光標(biāo)樣式侧蘸,即設(shè)置屬性 android:textCursorDrawable裁眯,需要自定義一個(gè)shape文件放在drawable資源目錄下并引用。
以上方法中讳癌,方法一改變了app的主題樣式穿稳,對于沉浸式的app來講是不可取的;方法二直接在XML文件里修改EditText的高度晌坤,方便快捷司草,并且改動(dòng)小泡仗;方法三由于布局的限制不太可取猜憎;方法四需要自定義一個(gè)光標(biāo)樣式娩怎,在不同手機(jī)上可能不太兼容。
故推薦使用 *方法二 *解決Android7.0上雙光標(biāo)的問題胰柑!