6

可见我希望把里面NestedScrollView一个RecylerView如下Recylerview内部没有滚动型或nestedScrollview

activity_service_menu.xml

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

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

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="HELLO" /> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/rv" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="8dp" /> 
    </LinearLayout> 
</android.support.v4.widget.NestedScrollView> 

ServiceMenuActivity.java

public class ServiceMenuTActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_service_menu_t); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     RecyclerView rv = (RecyclerView) findViewById(R.id.rv); 
     rv.setLayoutManager(new LinearLayoutManager(getApplicationContext())); 
     rv.setHasFixedSize(true); 
     rv.setAdapter(new RvAdapter()); 
    } 

    private static class RvAdapter extends RecyclerView.Adapter<RvAdapter.RvHolder> { 

     @Override 
     public RvHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View serviceMenuItemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_service_menu, parent, false); 
      return new RvHolder(serviceMenuItemView); 
     } 

     @Override 
     public void onBindViewHolder(RvHolder holder, int position) { 

     } 

     @Override 
     public int getItemCount() { 
      return 100; 
     } 

     public static class RvHolder extends RecyclerView.ViewHolder { 

      public RvHolder(View itemView) { 
       super(itemView); 
      } 
     } 
    } 

} 

我已经把里面的LinearLayout scrollView和nestedScrollView。 但RecyclerView不可见。如果我用FrameLayout或任何其他布局替换ScrollView,那么RecyclerView是可见的。

我想使用nestedScrollView并滚动recyclerView时滚动总布局。不幸的是,recyclerView甚至不可见。

+0

你真的需要'LinearLayout'作为内部''NestedScrollView'的RecyclerView'父? –

+0

不可以。由于ScrollView只接受1个孩子,因此我已将LinearLayout作为包装。我需要在TextView下面使用RecyclerView,当RecyclerView滚动时,整个视图应该滚动。 – Narendra

+0

你能否基本描述你想要的行为类型?像折叠工具栏或其他任何东西。 –

回答

11

按照这个样本将得到你犯了错误的地方。 主线是:android:fillViewport =“true”。

<android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:fillViewport="true" 
     android:theme="@style/ThemeOverlay.AppCompat.Light" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:paddingTop="24dp"> 


     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="16dp"> 


     <com.app.view.CustomRecyclerView 
      android:id="@+id/recycler_movie_suggestion" 
      android:layout_width="match_parent" 
      android:layout_height="170dp" 
      android:fillViewport="true" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    </android.support.v7.widget.CardView> 

    </LinearLayout> 

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

您先生是惊人的。看来在NestedScrollView上设置fillViewport =“true”的确有窍门。谢谢! – Pkmmte

+0

这是唯一一个为我工作的解决方案,我试着从相关的问题,但没有人工作。 – UrielUVD

相关问题