android - 支持工厂 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"
/>
问题是:视图/背景的色调和颜色在膨胀时不适用,它们是用默认值膨胀的。
注意:我使用背景为“浅红色矩形”的微调器样式,但在膨胀后其颜色变为黑色。
解决方案
推荐阅读
- c# - 无法使用 Sqlite 在 Xunit 上初始化数据库
- datadog - APM 资源名称(HTTP 端点)按 pod 名称(实例名称)分组
- mysql - 如何获取mysql中的所有相关数据?
- excel - 如何根据Excel中基于两个日期的条件获取周数
- terraform - 在 Terraform 中多次执行相同的资源
- javascript - 如何通过onclick javascript创建元素后滑动元素
- python - ValueError:不能使用 'rcan/truediv' 作为 'rcan/conv2d/kernel/Initializer/random_uniform/sub' 的输入,因为 'rcan/truediv' 在 while 循环中
- c++ - 我们可以在 C++ 中以枚举数据类型存储字符串吗?
- asp.net - 如何记录asp.net中抛出的异常?
- php - 打印表格pdf功能