7
HorizontalScrollView
に浮動矢印を追加すると、現在のビューよりも多くのアイテムがあることをユーザーに知らせることができます。最大HorizontalScrollViewスクロール量を取得
私が必要とするのは、表示が最大にスクロールされたかどうかを確認する方法です。あなたはgetMaxScrollAmount()
メソッドがこれを与えるだろうと思ったでしょう - それは私のコードで私にビューの幅を与えます。なぜ図に行くの?ここに私のコードです - いいとシンプル:上記のデバッグから
final ImageView leftArrow = (ImageView) toReturn.findViewById(R.id.leftArrow);
final ImageView rightArrow = (ImageView) toReturn.findViewById(R.id.rightArrow);
final HorizontalScrollView scrollView = (HorizontalScrollView) toReturn.findViewById(R.id.actionBarHoriztonalScroll);
final GestureDetector gd = new GestureDetector(new SimpleOnGestureListener() {
@Override
public boolean onScroll(MotionEvent e1,
MotionEvent e2,
float distanceX,
float distanceY) {
if(scrollView.getScrollX() == 0) {
leftArrow.setVisibility(View.GONE);
} else {
leftArrow.setVisibility(View.VISIBLE);
}
if(scrollView.getScrollX() == scrollView.getMaxScrollAmount() ||
scrollView.getMaxScrollAmount() == 0) {
rightArrow.setVisibility(View.GONE);
} else {
rightArrow.setVisibility(View.VISIBLE);
}
Log.v(ClientDetailsFragment.class.getSimpleName(), "max: " + scrollView.getMaxScrollAmount() +
"current: " + scrollView.getScrollX());
return super.onScroll(e1, e2, distanceX, distanceY);
}
});
scrollView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent ev) {
gd.onTouchEvent(ev);
return false;
}
});
出力:
10-03 14:36:16.343: VERBOSE/(20508): max: 240 current: 126
10-03 14:36:16.363: VERBOSE/(20508): max: 240 current: 127
10-03 14:36:16.386: VERBOSE/(20508): max: 240 current: 132
10-03 14:36:16.398: VERBOSE/(20508): max: 240 current: 143
10-03 14:36:16.417: VERBOSE/(20508): max: 240 current: 149
10-03 14:36:16.433: VERBOSE/(20508): max: 240 current: 152
10-03 14:36:16.449: VERBOSE/(20508): max: 240 current: 152
10-03 14:36:16.468: VERBOSE/(20508): max: 240 current: 152
に次のコードを入れて、XMLが膨張された後、それはonCreateView幅だために「0」を与えます。 'findById'を実行しても、0の幅が与えられます。理由はまったくありません。しかし、良いアイデア! – Graeme
oncreateは、ビューが実際に画面に描画される前に発生します。レイアウトが描画された後にしか正しい幅を取得できません。私は私の無回答を更新する。 – blessenm
偉大な答え、説明とそれが配置された後の実際の幅を取得する方法! – Graeme