Ich suche um diese Frage auf der ganzen Welt zu beantworten, aber ich habe keine direkte Antwort auf diese populäre Frage gefunden. Endlich habe ich einen Trick gemixt und dieses Problem gelöst!
Mein Problem starten, wenn mein Chef hat mich gebeten, ein RecyclerView in einem Scroll, zu verwenden und wie Sie wissen, dass wir nicht außer zwei Scrollbare Objekte ineinander verwenden können, wenn wir setzen oder fix Artikel Höhe wissen für unsere RecyclerView. und dies ist die Antwort:
Schritt 1: zunächst sollten Sie Ihre RecyclerView flexible Element Höhe finden und dies ist möglich, von Ihrem RecyclerView> onBindViewHolder
holder.itemView.post(new Runnable() {
@Override
public void run() {
int cellWidth = holder.itemView.getWidth();// this will give you cell width dynamically
int cellHeight = holder.itemView.getHeight();// this will give you cell height dynamically
dynamicHeight.HeightChange(position, cellHeight); //call your iterface hear
}
});
mit diesem Code, den Sie finden Ihre Artikel Höhe wie sie bauen und senden Sie die Artikel Höhe zu Ihrer Aktivität mit Schnittstelle.
für die Freunde, die Probleme mit der Schnittstelle haben, lasse ich den Schnittstellencode darunter, der in Adapter schreiben sollte.
public interface DynamicHeight {
void HeightChange (int position, int height);
}
Schritt 2: fanden wir unsere Artikel Höhe so weit und jetzt wollen wir die Höhe unserer RecyclerView einzustellen. Zuerst sollten wir die Summe der Artikelhöhe berechnen.in diesem Schritt tun wir dies durch BitMap ersten implementiert letzten Schritt Schnittstelle und diesen Code unten in Ihrer Aktivität oder Fragment, die Ihre RecyclerView definieren schreiben:
@Override
public void HeightChange(int position, int height) {
itemHeight.put(position, height);
sumHeight = SumHashItem (itemHeight);
float density = activity.getResources().getDisplayMetrics().density;
float viewHeight = sumHeight * density;
review_recyclerView.getLayoutParams().height = (int) sumHeight;
int i = review_recyclerView.getLayoutParams().height;
}
int SumHashItem (HashMap<Integer, Integer> hashMap) {
int sum = 0;
for(Map.Entry<Integer, Integer> myItem: hashMap.entrySet()) {
sum += myItem.getValue();
}
return sum;
}
Schritt 3: Jetzt haben wir die Summe Ihrer RecyclerView-Höhe. für den letzten Schritt sollten wir nur die Schnittstelle senden, die wir in letzter Schritt schreiben mit einigen Code wie folgt an Adapter:
reviewRecyclerAdapter = new ReviewRecyclerAdapter(activity, reviewList, review_recyclerView, this);
wenn Sie Schnittstelle implementieren , sollten Sie es zu Ihrem mit Ihrem Kontext senden, die ich verwenden dies.
Genießen Sie es
Was ist Ihr Problem gescrollt werden? –
@OmarHassan Ich sollte mehr als einen ** RecyclerView ** in einem ** ScrollView ** verwenden. nur es – Ashkan
nicht von den oben genannten helfen mir ... nur diese Antwort Post hier: [Recyclerview in Scrollview] (http://Stackoverflow.com/a/36979664/4240256) –