2016-04-02 29 views
1

Bu "sorunun" yanıtı için bu girdinin alt kısmına bakın.Görünümün odaklanmasını iste ve ekranın üstüne kaydır Bir ScrollView

Uygulamamda bazı xml görünümlerini şişiriyorum ve bunları bir ScrollView içinde bir LinearLayout listesine ekliyorum. XML şöyle görünür:

<ScrollView 
     android:layout_width="0dp" 
     android:layout_weight="19" 
     android:layout_height="wrap_content" 
     android:fillViewport="true"> 
     <LinearLayout 
      android:id="@+id/list" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 
     </LinearLayout> 
</ScrollView> 

Sonra ben 'listesi' haline koyduk görünümlerden biri odağı vermeye çalışıyoruz. Bir kaydırma aşağı yukarıdaki kod sonuçları, odaklanmış görünümü ekranın alt kısmında yer alırsanız

view.getParent().requestChildFocus(view, view); 

ve bir kaydırma yukarı sonuçlanıyorsa, odaklanmış görünümü yerleştirilmiş olsun: Bu, bu kodu kullanarak yapılır Ekranın en üstünde.

Eğer liste uzunluğu izin veriyorsa odaklanmış görüntüyü her zaman ekranın en üstüne yerleştirmek için bir yol var mı?

Düzenleme: Bu çalışır! Kabul edilen cevaba bakınız.

scrollView.smoothScrollTo(0,view.getTop()); 

O yapacaktır:

view = findViewById(get_view_that_should_have_focus); 
ScrollView scrollView = findViewById(R.id.scroll_list); 
scrollView.smoothScrollTo(0, view.getTop()); 
+0

Daha fazla ayrıntı verebilir misiniz, belki de neler olduğunu anlatabilir misiniz? – mhdjazmati

cevap

2

Bunu kullanarak belirli görünüme dikey kaydırma yapabilirsiniz

XML

<ScrollView 
     android:id="@+id/scroll_list" 
     android:layout_width="0dp" 
     android:layout_weight="19" 
     android:layout_height="wrap_content" 
     android:fillViewport="true"> 
     <LinearLayout 
      android:id="@+id/list" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 
     </LinearLayout> 
</ScrollView> 

Örnek kod etkinlik veya fragmanında yere koymak görünümünüzü yukarı kaydırın (eğer yeterli yükseklik varsa) Kaydettikten sonra, bu manzara.