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就可以解決問題,也測試過,完美解決
相關文章
- Android:巢狀滑動總結Android巢狀
- 部落格中圖片邊緣陰影問題
- Android巢狀滑動邏輯淺析Android巢狀
- ScrollView巢狀RecyclerView滑動衝突相關問題View巢狀
- 解決 ScrollView 巢狀 RecyclerView 時,慣性滑動失效的問題View巢狀
- 【Android ViewPager】解決ViewPager巢狀時在API 13及其以下版本中不能滑動的問題AndroidViewpager巢狀API
- CSS圖片邊框陰影效果CSS
- Android Studio 百度地圖導航Android地圖
- iOS 【如何去除 UILabel 邊緣異常黑線/陰影】iOSUI
- Android開發百度地圖指南針消失問題Android地圖
- 解決Flutter的ListView巢狀ListView滑動衝突以及無限高度問題FlutterView巢狀
- html的開始與結束標籤巢狀錯誤會導致哪些問題?HTML巢狀
- Android 百度地圖InfoWindow 出現重疊的問題Android地圖
- react native ScrollView巢狀WebView 互動問題React Native巢狀WebView
- css圖片陰影、文字陰影CSS
- CSS 邊框陰影立體邊框CSS
- 物件導向 成員和巢狀物件巢狀
- android recyclerview 上下滑動導致點選事件和資料錯亂問題解決AndroidView事件
- 一種巢狀滑動衝突的解決方案巢狀
- 巢狀ScrollView問題解決思路巢狀View
- Android ViewPager2 + Fragment 聯動AndroidViewpagerFragment
- Docker啟動出現"No space left on device" 或者 docker日誌太多導致磁碟佔滿問題Dockerdev
- NestedScrolling機制解析,自定義巢狀滑動你也可以巢狀
- 一種非巢狀滑動衝突的解決方案巢狀
- Shadow Map(陰影貼圖)跟Soft Shadows(軟陰影)
- Android ViewPager2 + Fragment + BottomNavigationView 聯動AndroidViewpagerFragmentNavigation
- Android Material Design 陰影實現AndroidMaterial Design
- 立體感的邊框陰影效果
- 網頁頂部陰影邊框效果網頁
- 線上直播系統原始碼,flutter 巢狀滑動實現原始碼Flutter巢狀
- Android 檢視高度和陰影的那點事兒Android
- Android 設定TextView滑動滾動條和滑動效果AndroidTextView
- chorme自動升級導致跨域問題ORM跨域
- 帝國cms如何解決截圖出現黑邊的問題
- 適配Android P(9.0)的問題 (百度地圖)HttpClient: Catch connection exception, INNER_ERRORAndroid地圖HTTPclientExceptionError
- 不要在 XML 設定,解決 NestedScrollView 巢狀 RecyclerView 滑動卡頓XMLView巢狀
- alicdn邊緣節點不穩定導致頁面崩潰問題
- 移動邊緣計算中的安全問題現狀