मेरा लक्ष्य FlexboxLayout (या कुछ इसी तरह) में बहुत सारे TextViews (पृष्ठभूमि के साथ) को कुशलतापूर्वक प्रदर्शित करना है।

मैं एक तरह की 'टैग'-लेआउट शैली में एक फिल्म से अभिनेताओं और चालक दल के सदस्यों के बारे में जानकारी प्रदर्शित करना चाहता हूं

लेआउट कैसा दिखता है (FlexboxLayouts में से एक चिह्नित है)

मैं TextViews गतिशील रूप से को LayoutInflater के माध्यम से FlexboxLayout में फुलाता हूं। समस्या निश्चित रूप से यह है कि बहुत सारे डेटा (जिसका अर्थ है बहुत सारे दृश्य, कभी-कभी २० फ्लेक्सबॉक्स-लेआउट में ३० या अधिक) के साथ मेरे टुकड़े का निर्माण समय /गतिविधि बढ़ जाती है और सक्रियता को खुलने में अधिक समय लगता है

टेक्स्ट व्यू मैं फुलाता हूं:

<TextView 
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/tag_name"
      android:layout_width="wrap_content"
      android:layout_height="30dp"
      android:layout_margin="5dp"
      android:paddingStart="10dp"
      android:paddingEnd="10dp"
      android:gravity="center_vertical"
      android:background="@drawable/bg_tag"
      android:textColor="?android:textColorSecondary"
      android:text="@string/placeholder" />

मेरा कंटेनर लेआउट (TextViews को FlexboxLayout @+id/fxl_names में फुलाया जाता है):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">

  <TextView
    android:id="@+id/txt_names"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="?attr/colorOnBackground"
    android:padding="5dp"
    android:textSize="16sp"
    android:textStyle="bold"
    android:text="test" />

  //TextViews get inflated into this FlexboxLayout

  <com.google.android.flexbox.FlexboxLayout
    android:id="@+id/fxl_names"
    app:flexWrap="wrap"
    android:animateLayoutChanges="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

  <com.google.android.material.button.MaterialButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/view_more"
    android:visibility="gone"
    android:layout_margin="0dp"
    android:text="Show all"
    style="@style/Widget.MaterialComponents.Button.TextButton.Dialog" />

</LinearLayout>

इस लेआउट को अनुकूलित करने पर किसी भी मदद/सलाह के लिए धन्यवाद!

1
TheGoobsy 4 अप्रैल 2020, 00:05

1 उत्तर

सबसे बढ़िया उत्तर

जब आपको गतिशील रूप से बहुत सारे दृश्यों को बढ़ाना था, तो आपको फुलाए हुए दृश्य क्रिया के अनुकूलन को सुनिश्चित करने के लिए ViewHolder नामक किसी चीज़ का उपयोग करना चाहिए।

आपकी समस्या के लिए आपको FlexBoxLayout के बजाय RecyclerView का उपयोग करना पड़ सकता है, जो मेरी राय में सबसे अच्छा समाधान है। और अपने विचारों को व्यवस्थित करने के लिए एक FlexBoxLayoutManager

Android FlexBoxLayout रिपॉजिटरी में एक उदाहरण है

1
Vinicius Almada 3 अप्रैल 2020, 21:46