HorizontalScrollView
'a kayan oklar ekleyerek, kullanıcının mevcut görünümün dışında daha fazla öğe olduğunu bilmesini sağlayacağım.En yüksek HorizontalScrollView kaydırma miktarını elde edin
İhtiyacım olan şey, Görünümün en çok üzerine kaydırılmış olup olmadığını nasıl anlamanız gerektiğidir. getMaxScrollAmount()
yönteminin size bunu vereceğini düşündünüz - bu benim kodumda Görünümün genişliğini veriyor. Git nedenini anla. İşte benim kod - güzel ve basit: Yukarıdaki hata ayıklama gelen
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;
}
});
Çıktı:
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
verir senin onCreate yönteminde aşağıdaki kodu yerleştirin "0" xml şişirildikten sonra o onCreateView genişlik var için. 'FindById' yapmak bile 0 genişliğini verir - kesinlikle neden hiçbir fikir. İyi fikir olsa! Görünümler gerçekte ekranda çizilmeden önce – Graeme
oncreate atıldı. Düzen çizildikten sonra yalnızca doğru genişliği alabilirsiniz. Koridorumu güncelledim. – blessenm
Büyük bir açıklama, açıklama ve ortaya konulduktan sonra bir görünümün gerçek genişliğini elde etmenin yolu! – Graeme