首页 > 解决方案 > 支持工厂 2 的 AsyncLayoutInflater

问题描述

我在创建片段视图时使用 AsyncLayoutInflater 来提高性能,它是一个很棒的工具。

但是文件说

此充气器不支持设置 LayoutInflater.Factory 或 LayoutInflater.Factory2。同样,它不支持包含片段的膨胀布局。

问题从这里开始,视图的所有属性(颜色&色调&背景和背景颜色)都将被忽略。

所以我需要使用代码(java)设置它们。

有什么办法可以避免这项工作??(许多观点需要许多海关颜色和色调)。

    AsyncLayoutInflater inflater = new AsyncLayoutInflater(context);
    inflater.inflate(R.layour.second, bind.container, (view, resId, p) -> {
    
           bind.container.add(view);
           secondBind LayoutSecondBind.bind(view);

           //here I should set attr that AsyncLayoutInflater does not do
           //when inflating because of not supporting Factory / Factory2 

    });

XML 代码(只是真实文件的一部分)

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/searchAutoCompleteTextLayout"
        android:layout_width="0dp"
        android:layout_height="@dimen/my75dp"
        android:hint="@string/search_product_hint"
        app:boxStrokeColor="@color/auto_complete_text_input_layout_color"
        app:endIconDrawable="@drawable/icon_clear"
        app:endIconMode="clear_text"
        app:endIconTint="@color/icon_tint_color"
        app:layout_constraintEnd_toStartOf="@id/imageView"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.appcompat.widget.AppCompatAutoCompleteTextView
            android:id="@+id/searchAutoCompleteText"
            style="@style/Widget.MaterialComponents.AutoCompleteTextView.OutlinedBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:background="@null"
            android:layout_marginEnd="@dimen/my5dp"
            android:drawableStart="@drawable/icon_search"
            android:drawableTint="@color/icon_tint_color"
            android:dropDownHeight="@dimen/my150dp"
            android:imeOptions="actionDone"
            android:inputType="textAutoComplete"
            android:lines="1"
            android:singleLine="true"
            app:endIconMode="clear_text" />

    </com.google.android.material.textfield.TextInputLayout>

 <ImageView
        android:id="@+id/imageView"
        android:layout_width="@dimen/my50dp"
        android:layout_height="@dimen/my50dp"


        android:src="@drawable/icon"
        app:layout_constraintBottom_toBottomOf="@id/searchAutoCompleteTextLayout"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@id/searchAutoCompleteTextLayout"
        app:tint="@color/icon_tint_color" />


    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="@dimen/my75dp"
        android:background="@drawable/background_create_product"

        android:drawableStart="@drawable/icon_scan_barcode"
        android:gravity="center"
        android:paddingStart="@dimen/my25dp"
        android:paddingEnd="@dimen/my25dp"
        android:text="@string/create_product"
        android:textColor="?attr/colorOnPrimary"
        android:textSize="20sp"
        app:drawableTint="?attr/colorOnPrimary"
        app:layout_constraintTop_toBottomOf="@id/searchAutoCompleteTextLayout" />


    <TextView
        android:id="@+id/sortText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"


        android:drawableStart="@drawable/icon_sort"
        android:gravity="center_vertical"
        android:text="@string/product_sort_by"
        app:drawableTint="@color/icon_tint_color"
        app:layout_constraintBottom_toBottomOf="@id/sortBySpinner"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@id/sortBySpinner" />

    <Spinner
        android:id="@+id/sortBySpinner"
        android:layout_width="0dp"
        android:layout_height="@dimen/my35dp"
        android:layout_marginTop="@dimen/my10dp"
        android:layout_marginStart="@dimen/my10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/sortText"
        app:layout_constraintTop_toBottomOf="@id/textview"
        />

问题是:视图/背景的色调和颜色在膨胀时不适用,它们是用默认值膨胀的。

注意:我使用背景为“浅红色矩形”的微调器样式,但在膨胀后其颜色变为黑色。

标签: androidperformanceviewfactory

解决方案


推荐阅读