2017-04-06 7 views
1

mainActivity内にviewPagerを含むアプリケーションを作成しました。このviewPagerには5個のフラグメントが含まれています(4個はrecyclerView、1個はテキストを含む通常のlinearLayout)。 ...ここで Android:recyclerViewを含む子がスクロールされたときにparentViewをスクロールする方法

アプリのスクリーンショットは、tablayoutでなく、すべてのタブが表示されます:

screenshot

さて、あなたはすでに見てきた可能性があるとして、多くのスペースがviewPagerではありませんユーザーが何かを見ることができるように、あまりにもスクロールして、recylerVのものを見る必要があります見る。ユーザーがrecyclerView内をスクロールしようとすると、recyclerViewがページ全体を占有し、次にrecyclerViewが正常にスクロールし始めるまで、mainActivityの可視部分がスクロールされるようにアプリケーションを修正したいと思います。

誰かが私のアプリにこの種のスクロール機能を実装するのを手伝ってもらえますか?私が言っていることへの参照のためにちょうどthisアプリをチェックアウトすることができます。映画やTVシリーズを開き、スクロールしてみると、mainActivityは最初にスクロールされ、残りのレイアウトは....誰かが助けてくれますか?私はすでにstackOverflowのソリューションを試してみましたが、それらの多くはうまくいきませんでした。私はまた、Googleのソリューションを試してみましたが、何も役に立たなかった...

私のアダプタのコードは次のとおりです:

public class cardViewAdapterCreditsCast extends RecyclerView.Adapter<cardViewAdapterCreditsCast.ViewHolder> { 

private Context context; 
private List<creditsModel> creditsModels; 

public cardViewAdapterCreditsCast(Context context, List<creditsModel> creditsModels) { 
    this.context = context; 
    this.creditsModels = creditsModels; 
} 

@Override 
public cardViewAdapterCreditsCast.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.new_cast_row, parent, false); 

    return new cardViewAdapterCreditsCast.ViewHolder(view); 
} 

@Override 
public void onBindViewHolder(cardViewAdapterCreditsCast.ViewHolder holder, int position) { 
    final creditsModel creditsModel = creditsModels.get(position); 

    int tempNumber = holder.celebImage.getWidth(); 
    holder.celebImage.setMinimumHeight(tempNumber); 
    holder.celebImage.setMaxHeight(tempNumber + 1); 

    String imagePath = "https://image.tmdb.org/t/p/w500" + creditsModel.getProfilePath(); 

    holder.starringAs.setText(creditsModel.getCharacter()); 
    holder.celebName.setText(creditsModel.getActorName()); 

    if (creditsModel.getProfilePath() != null) { 
     Picasso.with(context).load(imagePath).transform(new CircleTransform()).into(holder.celebImage); 
    } else 
     holder.celebImage.setBackgroundResource(R.drawable.not_found); 
} 

@Override 
public int getItemCount() { 
    return creditsModels.size(); 
} 

public class ViewHolder extends RecyclerView.ViewHolder { 

    public ImageView celebImage; 
    public TextView celebName; 
    public TextView starringAs; 

    private LinearLayout linearLayout; 

    public ViewHolder(View itemView) { 
     super(itemView); 

     linearLayout = (LinearLayout) itemView.findViewById(R.id.castRowMainLinearLayout); 

     celebImage = (ImageView) itemView.findViewById(R.id.castRowImage); 
     celebName = (TextView) itemView.findViewById(R.id.castRowName); 
     starringAs = (TextView) itemView.findViewById(R.id.castRowAppearance); 
     } 
    } 
} 
+0

あなたはコーディネーターのレイアウトを使用する必要があります - http://saulmm.github.io/mastering-coordinatorを見てください –

答えて

関連する問題