[解決済み] ScrollViewの終了を検出する
質問
あるアプリで、アクティビティに
ScrollView
. ユーザーが ScrollView
. 私はいくつかのグーグル検索を行い、私は見つけた
このページ
と説明されています。しかし、この例では、その人が拡張している
ScrollView
. やはり、Activityを拡張する必要があります。
では、Activityを拡張するカスタムクラスを作ってみましょう。
ScrollView
をオーバーライドして
onScrollChanged()
メソッドをオーバーライドし、スクロールの終了を検出し、それに応じて動作します" 。
したのですが、この行で
scroll = (ScrollViewExt) findViewById(R.id.scrollView1);
を投げます。
java.lang.ClassCastException
. を変更しました。
<ScrollView>
タグを変更しましたが、明らかに、うまくいきません。私の疑問は なぜ、もし
ScrollViewExt
が
ScrollView
を投げると、私の顔に向かって
ClassCastException
は、あまり混乱することなく、スクロールの終了を検出する方法はありますか?
ありがとうございます。
編集 約束したように、これが私の XML の重要な部分です。
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<WebView
android:id="@+id/textterms"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:textColor="@android:color/black" />
</ScrollView>
から変更しました。
TextView
から
WebView
に変更し、中のテキストを正当化できるようにしました。実現したいのは、契約条件を完全に読み込むまで、"Accept ボタンが有効にならないようにすることです。私の拡張クラスは
ScrollViewEx
t. タグを変更すると
ScrollView
を
ScrollViewExt
を投げます。
android.view.InflateException: Binary XML file line #44: Error inflating class ScrollViewExt
というタグを理解できないので
ScrollViewEx
. 解決策があるとは思えませんが...。
ご回答ありがとうございました
どのように解決するのですか?
できた!
Alexandreが提供してくれた修正以外に、私はインターフェイスを作成する必要がありました。
public interface ScrollViewListener {
void onScrollChanged(ScrollViewExt scrollView,
int x, int y, int oldx, int oldy);
}
そして、ScrollViewのOnScrollChangedメソッドをScrollViewExtでオーバーライドする必要がありました。
public class ScrollViewExt extends ScrollView {
private ScrollViewListener scrollViewListener = null;
public ScrollViewExt(Context context) {
super(context);
}
public ScrollViewExt(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ScrollViewExt(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setScrollViewListener(ScrollViewListener scrollViewListener) {
this.scrollViewListener = scrollViewListener;
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (scrollViewListener != null) {
scrollViewListener.onScrollChanged(this, l, t, oldl, oldt);
}
}
}
さて、Alexandreが言ったように、XMLタグにパッケージ名を入れて(私のミスです)、Activityクラスに先ほど作ったインタフェースを実装させ、そして、全部をまとめます。
scroll = (ScrollViewExt) findViewById(R.id.scrollView1);
scroll.setScrollViewListener(this);
そして、インターフェイスからOnScrollChangedというメソッドで...
@Override
public void onScrollChanged(ScrollViewExt scrollView, int x, int y, int oldx, int oldy) {
// We take the last son in the scrollview
View view = (View) scrollView.getChildAt(scrollView.getChildCount() - 1);
int diff = (view.getBottom() - (scrollView.getHeight() + scrollView.getScrollY()));
// if diff is zero, then the bottom has been reached
if (diff == 0) {
// do stuff
}
}
そして、うまくいきました
Alexandreさん、どうもありがとうございました。
関連
-
[解決済み] ScrollView 内の RecyclerView が動作しない。
-
[解決済み] ListViewをScrollViewの中に入れても、崩れないようにするにはどうしたらいいですか?
-
[解決済み】Android。ScrollViewが強制的に下に表示される
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] EditTextをReadOnlyにする
-
[解決済み] Google Play ストア内部テストのロールアウトが開始できない
最新
-
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: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] EditTextをReadOnlyにする
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
-
[解決済み] Android: xml リソースからの整数値