2016-11-28 6 views
1

リストビューには垂直スクロールがあり、その項目にはRecyclerViewがあり、これは水平にスクロールします。 しかし、私が水平にスクロールすると、RecyclerViewはリストの最後の項目(下の図)にスクロールすることを許可しません。何が起こったのですか?さらに、最後の項目までスクロールして設定します。linearLayoutManager.setStackFromEnd(true);それはまだ、動作しないだけで8番目の項目ではなく、10RecycleViewは最後の項目にスクロールしません

編集のリストの最後の項目の半分までスクロール:コードを追加します。

List.xmlの

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.phongponix.trackingbodybuilding.MainActivity$PlaceholderFragment"> 

    <ListView android:id="@+id/lvExerciseList" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clipToPadding="false" 
     android:paddingBottom="50dp" 
     ></ListView> 
</RelativeLayout> 

list_item.xmlを

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:padding="20dp"> 
    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <TableRow> 
      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 
       <ImageView 
        android:id="@+id/imgExcercisePhoto" 
        android:layout_width="100dp" 
        android:layout_height="100dp" /> 

       <TextView android:text="aaa" 
        android:id="@+id/tvExerciseName" 
        android:layout_width="100dp" 
        android:layout_height="wrap_content" /> 
      </LinearLayout> 
      <android.support.v7.widget.RecyclerView 
       android:id="@+id/rvExcerciseRecords" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:clipToPadding="false" 
       android:layout_margin="10dp" 
       android:paddingRight="50dp" 
       android:scrollbars="horizontal"> 
      </android.support.v7.widget.RecyclerView> 
     </TableRow> 
    </TableLayout> 
</LinearLayout> 

list_item_horizo​​ntal.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="100dp" 
    android:layout_height="match_parent" 
    android:clipToPadding="false" 
    android:paddingRight="10dp"> 
    <TextView 
     android:id="@+id/tvTemp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 
リストアダプタの

コード:

public View getView(int i, View convertView, ViewGroup viewGroup) { 
     View view = convertView; 
     if (convertView == null) { 
      view = inflater.inflate(R.layout.list_item, null); 
      viewHolder = new ViewHolder(); 
      viewHolder.title = (TextView) view.findViewById(R.id.tvExerciseName); 
      view.setTag(viewHolder); 
      recyclerView = (RecyclerView)view.findViewById(R.id.rvExcerciseRecords); 
      LinearLayoutManager linearLayoutManager = new LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false); 
      linearLayoutManager.setStackFromEnd(true); 
      recyclerView.setLayoutManager(linearLayoutManager); 
      recyclerView.setAdapter(trackingPlanHorizontalAdapter); 
      recyclerView.setNestedScrollingEnabled(false); 

     } else { 
      viewHolder = (ViewHolder) view.getTag(); 
     } 

     if (data.size() > 0) { 
      ExerciseModel exercise = (ExerciseModel) data.get(i); 
      viewHolder.title.setText(exercise.getTitle()); 
     } else { 
      viewHolder.title.setText("No data"); 
     } 

     return view; 
    } 

コードリサイクルのためのアダプタ:

public TrackingPlanHorizontalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_horizontal, parent, false); 
     return new TrackingPlanHorizontalViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(TrackingPlanHorizontalViewHolder holder, int position) { 
     holder.textView.setText(horizontalList.get(position)); 

    } 
私はあなたの問題を発見はい

enter image description here

+0

余裕をもってRecyclerViewを設定しようとしましたか? –

+0

Vertical RecyclerViewおよびHorizo​​ntal RecyclerViewに関連するコードで質問を編集してください。 –

+1

ListViewは、タッチイベントをキャプチャして、RecyclerViewをスクロールできない可能性があります。 –

答えて

0

、変更あなたlist_item.xmlに関する問題があるあなた以下のコードのリスト項目

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="20dp"> 

    <LinearLayout 
     android:id="@+id/first_panel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <ImageView 
      android:src="@mipmap/ic_launcher" 
      android:id="@+id/imgExcercisePhoto" 
      android:layout_width="100dp" 
      android:layout_height="100dp" /> 

     <TextView 
      android:id="@+id/tvExerciseName" 
      android:layout_width="100dp" 
      android:layout_height="wrap_content" 
      android:text="aaa" /> 
    </LinearLayout> 
    <android.support.v7.widget.RecyclerView 
     android:layout_toRightOf="@+id/first_panel" 
     android:id="@+id/rvExcerciseRecords" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    </android.support.v7.widget.RecyclerView> 
</RelativeLayout> 
+0

ありがとうございました。それは私のTableLayoutのためです。 – phongtran

関連する問題