[解決済み] まず子の親でremoveView()を呼び出す
2022-02-07 12:40:58
質問
まず、背景を少し説明します。
私はスクロールビューの中にレイアウトを持っています。最初は、ユーザーが画面をスクロールすると、スクロールビューがスクロールします。しかし、ある程度スクロールしたら、スクロールビューのスクロールを無効にして、"スクロールフォーカス"を子レイアウト内のウェブビューに移動させることにしました。こうすることで、スクロールビューが固定され、すべてのスクロールイベントがその中のウェブビューに行くようになります。
そこで、解決策として、スクロールのしきい値に達したときに、スクロールビューから子レイアウトを削除して、スクロールビューの親に配置します(そしてスクロールビューを不可視にします)。
// Remove the child view from the scroll view
scrollView.removeView(scrollChildLayout);
// Get scroll view out of the way
scrollView.setVisibility(View.GONE);
// Put the child view into scrollview's parent view
parentLayout.addView(scrollChildLayout);
一般的な考え方 (-> 含むという意味)
前:parentlayout -> scrollview -> scrollChildLayout
後:parentLayout -> scrollChildLayout
上記のコードでは、この例外が発生します。
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:1976)
at android.view.ViewGroup.addView(ViewGroup.java:1871)
at android.view.ViewGroup.addView(ViewGroup.java:1828)
at android.view.ViewGroup.addView(ViewGroup.java:1808)
何が起こっているか分かりますか?私は明らかに親にremoveViewを呼び出しています。
どうすればいいですか?
解決方法
((ViewGroup)scrollChildLayout.getParent()).removeView(scrollChildLayout);
//scrollView.removeView(scrollChildLayout);
子要素を使用して、親への参照を取得します。親要素をViewGroupにキャストして、removeViewメソッドにアクセスできるようにし、それを使用します。
解決策を提供してくれた@Dongshengcnに感謝します。
関連
-
[解決済み] カスタムアダプタからnotifyDataSetChangeが機能しない
-
[解決済み】onCreateOptionsMenu(Menu メニュー)とは何ですか?)
-
[解決済み】ビットマップを保存する場所について
-
[解決済み] AndroidのADBデバイスが不正に
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] Gradle DSL メソッドが見つかりません:'compile()'
-
[解決済み] Android: @drawable/picture を drawable に変換するのに失敗しました。
-
[解決済み] setBackgroundDrawable() 非推奨
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android TextView : "setTextで表示されたテキストを連結しない" について
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み】Android Studio AVD - Emulator: 終了コード 1 でプロセスが終了
-
[解決済み】レンダリングの問題 レンダリング中に発生した例外:com/android/util/PropertiesMap [重複].
-
[解決済み】新しいAVDを作成すると、CPU/ABIフィールドに「システムイメージがインストールされていません」と表示される。
-
[解決済み] [Solved] java.lang.RuntimeException: アクティビティーのインスタンス化ができません ComponentInfo
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み】IllegalStateException: ViewPager で onSaveInstanceState の後にこのアクションを実行できません。
-
[解決済み] android.support.design.widget.FloatingActionButton クラスの展開に失敗しました。
-
[解決済み] AndroidでBluetoothが有効かどうかのチェックに失敗する(REQUEST_ENABLE_BTを変数に解決できない)。