मैं अपने 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
देता है "0" के लिए यह onCreateView में चौड़ाई के बाद एक्सएमएल फुलाया गया है। यहां तक कि 'findById' भी 0 की चौड़ाई देता है - बिल्कुल नहीं पता क्यों। अच्छा विचार हालांकि! स्क्रीन पर वास्तव में खींचे जाने से पहले – Graeme
ऑनक्वेट निकाल दिया जाता है। लेआउट तैयार किए जाने के बाद आप केवल सही चौड़ाई प्राप्त कर सकते हैं। मैं अपने unanswer अद्यतन। – blessenm
ग्रेट उत्तर, स्पष्टीकरण और इसे देखने के बाद दृश्य की वास्तविक चौड़ाई प्राप्त करने का तरीका! – Graeme