ScrollView, x ve y kaydırma ofseti ayarlamak için bir yönteme sahiptir, ancak geçerli ofset elde etmek için herhangi bir yöntem yoktur (yalnızca benim gerçekten ilgilendiğim şey kaymadır, çünkü ScrollView yalnızca desteklediği için dikey kaydırma). Üst sınıflarda çalışacak herhangi bir yöntem görmüyorum ve içerik görünümü için her zaman sıfır olan getTop() yöntemini denedim. Bir şey mi eksik?Bir ScrollView öğesinin geçerli Y ofseti nasıl elde edilir
cevap
Ne hakkında: computeHorizontalScrollOffset()
ve computeVerticalScrollOffset()
.
ScrollView'de getScrollY() öğesini çağırın. Daha fazla bilgi için buraya bakınız: Eğer getScrollY() veya getTop() kullandıktan sonra bazı değer elde gerektiğini eminseniz http://developer.android.com/reference/android/view/View.html#getScrollY%28%29
Belirli aralıklarla artan bir içeriğe (bir günlük görünümü gibi) sahip bir textView öğesini kaydırma işleminin, metnin son satırını gösterip göstermediğini görmek istedim. Bu yaptı: boolean lastLineVisible = scrollView.getScrollY() + scrollView.getHeight() + 100> = textView.getHeight() ' –
, Şimdi çalışmalıdır bir
yourScroolView.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"Current Y is : "+getScrollY,Toast.LENGTH_SHORT).show();
}
});
içindeki bu yöntemi koymak deneyin. Bu yöntemle ilgili anlayışıma göre, yalnızca düzenin çizilmesinden sonra çalışacaktır. Bu, daha önce 0 almayı sürdürmenizin sebeplerinden biri olabilir. Umarım yardımcı olur.
Aşağıdakileri elde etmeyi başardım. Önce ekran yüksekliğini ve genişliğini alın. Sonra
DisplayMetrics metrics = getResources().getDisplayMetrics();
float screenWidth = metrics.widthPixels;
float screenHeight = metrics.heightPixels;
(neyi gösteriliyor toplam ve ne ekranın dışında) belge yüksekliğini öğrenmek için
public float getDocumentHeight(){
return (computeVerticalScrollRange() * screenHeight)/computeVerticalScrollExtent();
}
Son olarak ofset
public float getTopY(){
return (getDocumentHeight() * computeVerticalScrollOffset())/computeVerticalScrollRange();
}
Bu almak için görebildiğiniz belgenin bölümüne göre pencerenin en üstünü gösterecek şekilde bir olayın tam konumunu
public boolean onTouchEvent(MotionEvent event) {
int y = event.getY() + (int) getTopY();
}
Ayrıca
Neden böyle bir şey denemiyorsunuz genişliğe işlemek için benzer bir şey yapabilir?
targetScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
int scrollX = targetScrollView.getScrollX();
Log.d(TAG, "scrollX: " + scrollX);
}
});
- 1. Seçme öğesinin seçenek değeri nasıl elde edilir
- 2. Bir WPF Görsel öğesinin ölçeklendirilmiş boyutu nasıl elde edilir
- 3. iPhone sdk'de bir UIWebView öğesinin içerik yüksekliği nasıl elde edilir?
- 4. Geçerli yinelemede bir sonraki yinelemenin değeri nasıl elde edilir
- 5. Python'da bir gauss filtresi nasıl elde edilir
- 6. SAX: Bir öğenin içeriği nasıl elde edilir
- 7. Geçerli örnek kimliği boto3'ten nasıl elde edilir?
- 8. Bir arsa (ylim) nasıl elde edilir?
- 9. Görüntüdeki bir çizginin çapı nasıl elde edilir?
- 10. JPopupMenu'da odaklanma nasıl elde edilir
- 11. UITableViewCell boyutu nasıl elde edilir?
- 12. Denetim Şablonu Nasıl Elde Edilir
- 13. Bir dizideki anahtarın konumu nasıl elde edilir
- 14. ncurses'da nasıl parlak bir renk elde edilir?
- 15. Hatalı hesaplamada nasıl bir istisna elde edilir?
- 16. Bir yapılandırma bayrağının değeri nasıl elde edilir?
- 17. Bir dizedeki son karakterler nasıl elde edilir
- 18. Bir Aktivitede görünen boyut nasıl elde edilir?
- 19. onWindowFocusChanged Fragment nasıl elde edilir?
- 20. Her bir ListView öğesinden bir değer nasıl elde edilir vb.net
- 21. SQLAlchemy kullanarak iç birleştirme nasıl elde edilir?
- 22. C# bir resimdeki görüntüden bir bitmap nasıl elde edilir
- 23. Solr'da son endeksli kayıt nasıl elde edilir?
- 24. Python çerezin etki alanı nasıl elde edilir
- 25. Bir scipy interpolant gradyanı doğrudan nasıl elde edilir?
- 26. JSON yanıt öğesinin bir dizi olup olmadığı nasıl kontrol edilir?
- 27. Bir TWinControl öğesinin X, Y konumunu nasıl alabilirim (ekrana göre)
- 28. Yerel Android'e tepki verme: ScrollView öğesinin "overscroll efekti" nasıl kaldırılır
- 29. ListView'i SelectedItem öğesinin ortasına kaydırmak için Yatay Ofseti hesapla
- 30. .NET Saat dilimi adıyla zaman dilimi ofseti elde edin
Bu yöntemler korunur ve bu nedenle yalnızca ScrollView alt sınıfını kullanıyorsanız erişilebilir. –
Teşekkürler, Cristian, çözümün bana yardımcı oldu. ScrollView'dan zaten bir alt sınıf görünümü aldım. Bir dinleyici setOnScrollViewListener (http://www.nicholasmelnick.com/entries/104) ile hesaplanmalıdır. Ayrıca getScrollY() ile ilk çözüm doğru çalışır. – CoolMind