0

ここに私のXMLコードです。NestedScrollView内のRecyclerViewでscrollTo(x、y)に移動する方法は?

<android.support.v4.widget.NestedScrollView 
     android:id="@+id/nav_scroll" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

      <include layout="@layout/nav_header_main" /> 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/nav_list" 
       android:layout_width="match_parent" 
       android:layout_height="@dimen/weight_based_height" 
       android:layout_weight="1" 
       android:nestedScrollingEnabled="false"/> 
     </LinearLayout> 

    </android.support.v4.widget.NestedScrollView> 

私は

navigationScroll.scrollTo(0, 200); 
    navigationScroll.smoothScrollTo(0, 200); 
    navigationRecycler.scrollTo(0, 200); 
    navigationRecycler.smoothScrollTo(0, 200) 

を試したし、それらのどれも動作しません。何も起こりません、スクロールの量は全くありません。

しかし興味深いことに、私はこの

navigationScroll.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { 
     @Override 
     public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
      if (scrollY == 0) { 
       navigationScroll.scrollTo(0, 150); 
      } 
     } 
    }); 

navigationScroll.scrollTo(0, 150);作品を行います。あなたはそれをリスナーに置かなくても、どうやって仕事をすることができると思いますか?

編集: いいえ、私のNestedScrollViewは私のDrawerLayoutの中にありました。私はこれをonDrawerOpenedのように内部に入れたら、scrollTo()メソッドを動作させました。

toggle = new ActionBarDrawerToggle(
     this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close){ 
     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 
     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      // Scroll to current item 
      navigationScroll.smoothScrollTo(0,200); 
     } 

    }; 
    drawer.setDrawerListener(toggle); 

答えて

0

どのようにこれらのメソッドを配置しましたか(アクティビティ/フラグメントライフサイクルメソッド)ビューが実際にレンダリングされる前に、それらのメソッドを呼び出す可能性があります。この場合、それらを別のライフサイクルの方法に入れてください、またはpost(Runnable r)で延期する必要があります。

+0

私は結局それを理解しましたが、入力に感謝します! – Isaiah

関連する問題