android viewpager2和scrollerview巢狀百度地圖MapView導致滑動有黑邊或者陰影問題
先說viewpager2吧,這個是一個新的控制元件,很好用,特別是用kotlin之後。
但在做垂直滑動的時候裡面巢狀一個edittext出現了大問題,但我相信如果你對自定義很熟悉的話最後還是不用再viewapger裡面巢狀editext,因為edittext每次都彈出軟鍵盤和每輸入一個字的時候view pager2 會重繪,會重新執行一些方法,然而一個方法會每次都會清除所有的焦點並且會賦值第一item的焦點,大家都知道viewpager2內部核心是recyclerview實現 的。
// Add currentItemUpdater before mExternalPageChangeCallbacks, because we need to update
// internal state first
mPageChangeEventDispatcher.addOnPageChangeCallback(currentItemUpdater);
mPageChangeEventDispatcher.addOnPageChangeCallback(focusClearer);
看到上面的一個回撥中focusClearer,繼續
// Prevents focus from remaining on a no-longer visible page
final OnPageChangeCallback focusClearer = new OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
clearFocus();
if (hasFocus()) { // if clear focus did not succeed
mRecyclerView.requestFocus(View.FOCUS_FORWARD);
}
}
};
clearFocus ()最終會走到這個方法,這裡是Android sdk30
/**
* Clears focus from the view, optionally propagating the change up through
* the parent hierarchy and requesting that the root view place new focus.
*
* @param propagate whether to propagate the change up through the parent
* hierarchy
* @param refocus when propagate is true, specifies whether to request the
* root view place new focus
*/
void clearFocusInternal(View focused, boolean propagate, boolean refocus) {
if ((mPrivateFlags & PFLAG_FOCUSED) != 0) {
mPrivateFlags &= ~PFLAG_FOCUSED;
clearParentsWantFocus();
if (propagate && mParent != null) {
mParent.clearChildFocus(this);
}
onFocusChanged(false, 0, null);
refreshDrawableState();
if (propagate && (!refocus || !rootViewRequestFocus())) {
notifyGlobalFocusCleared(this);
}
}
}
本人對原始碼都是很不瞭解大概是會清除父類下面的子類並重新整理。
所以說如果改變了當前頁面,如果有焦點會一併清除,而edittext需要隨時獲取焦點,所以造成了獲取焦點出現問題
解決方法:
/**
* Use with {@link #focusSearch(int)}. Move focus to the next selectable
* item.
* /**
*與{@link#focusSearch(int)}一起使用。將焦點移到下一個可選擇的位置
*專案。
*/
*/
public static final int FOCUS_FORWARD = 0x00000002;
因為之後會設定這個值,上面是百度翻譯過了,說的是會把焦點自動移動到下一個可選擇的位置,只需要再再新增一個edittext設定寬度為0就好。
scrollerview巢狀百度地圖MapView導致滑動有黑邊或者陰影問題
這個是剛剛開始些的時候發現的,老版本是不建議再scrollview裡面巢狀地圖的,而新的版本解決辦法是用另一個map com.baidu.mapapi.map.TextureMapView就可以解決問題,也測試過,完美解決
相關文章
- 高德地圖fragment 動態載入地圖 巢狀問題地圖Fragment巢狀
- Android:巢狀滑動總結Android巢狀
- 解決ScrollView巢狀RecyclerView滑動卡頓問題View巢狀
- Android巢狀滑動邏輯淺析Android巢狀
- ScrollView巢狀RecyclerView滑動衝突相關問題View巢狀
- 完美解決ScrollView巢狀ListView滑動衝突(有圖有真相)View巢狀
- CSS圖片邊框陰影效果CSS
- Android 多個Fragment巢狀導致的三大BUGAndroidFragment巢狀
- iOS 【如何去除 UILabel 邊緣異常黑線/陰影】iOSUI
- 解決 ScrollView 巢狀 RecyclerView 時,慣性滑動失效的問題View巢狀
- 解決ScrollView巢狀ViewPager出現的滑動衝突問題巢狀Viewpager
- view邊框陰影View
- Android 巢狀佈局導致的Exception: java.lang.ClassCastExceptionAndroid巢狀ExceptionJavaAST
- 【Android ViewPager】解決ViewPager巢狀時在API 13及其以下版本中不能滑動的問題AndroidViewpager巢狀API
- NestedScrollView巢狀RecyclerView時滑動不流暢問題的解決辦法View巢狀
- 使用百度地圖問題地圖
- android 巢狀問題(NestedScrolling)Android巢狀
- css圖片陰影、文字陰影CSS
- Android Studio 百度地圖導航Android地圖
- 仿網易雲和支付寶首頁巢狀滑動巢狀
- 解決Flutter的ListView巢狀ListView滑動衝突以及無限高度問題FlutterView巢狀
- Android開發百度地圖指南針消失問題Android地圖
- CSS 邊框陰影立體邊框CSS
- Android -下拉重新整理,ViewPager和ScrollView巢狀滾動問題解決方案AndroidViewpager巢狀
- Android 百度地圖InfoWindow 出現重疊的問題Android地圖
- 物件導向 成員和巢狀物件巢狀
- css實現邊框陰影效果CSS
- [整] Android ListView 去除邊緣陰影、選中色、拖動背景色等AndroidView
- 一種巢狀滑動衝突的解決方案巢狀
- 巢狀UIScrollview的滑動衝突解決方案巢狀UIView
- react native ScrollView巢狀WebView 互動問題React Native巢狀WebView
- iOS中webView巢狀tableView中動態高度問題iOSWebView巢狀
- CSS3圖片邊框陰影效果程式碼例項CSSS3
- css邊框陰影程式碼例項CSS
- 網頁頂部陰影邊框效果網頁
- 解決 ViewPager 巢狀導致的 Fragment 選單錯亂Viewpager巢狀Fragment
- 一種非巢狀滑動衝突的解決方案巢狀
- 線上直播系統原始碼,flutter 巢狀滑動實現原始碼Flutter巢狀