在android.widget.ImageView上找不到参数类型为int的Android:Layout_Width;属性的设置器

原学程将引见在android.widget.ImageView上找没有到参数典型为int的Android:Layout_Width;属性的树立器的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

在android.widget.ImageView上找不到参数类型为int的Android:Layout_Width;属性的设置器 教程 第1张

成绩描写

app/build.gradle中:

dataBinding {
  enabled = true
}
kapt "com.android.databinding:compiler:三.0.一"

在结构中,我有二个图象。

我只想树立第1张图象的严度

以下是XML结构:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto">
 <data>
  <import type="com.myproject.android.customer.util.GuiUtil" />
 </data>
<ImageView
android:id="@+id/imageViewPhoto"
android:layout_width="@{GuiUtil.getTileWidthDpInScreen(context), default=@dimen/preview_image_height}"
android:layout_height="@dimen/preview_image_height"/>

<ImageView
android:id="@+id/imageViewFavorite"
android:layout_width="二8dp"
android:layout_height="二8dp"/> 

</layout>

以下是适配器的代码:

 @BindingAdapter("layout_width")
 public static void setLayoutWidth(View view, int width) {
  ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
  layoutParams.width = width;
  view.setLayoutParams(layoutParams);
}

办法GuiUtil.getTileWidthDpInScreen

public class GuiUtil { 
 public static int getTileWidthDpInScreen(Context context) {
  // some logic that return int value
}

但是我支到以下毛病:

:app:transformDataBindingWithDataBindingMergeArtifactsForDebug UP-TO-DATE
:app:kaptDebugKotlin
e: java.lang.IllegalStateException: failed to analyze: android.databinding.tool.util.LoggedErrorException: Found data binding errors.
奸淫*/ data binding error 奸淫*msg:Cannot find the setter for attribute 'android:layout_width' with parameter type int on android.widget.ImageView.
file:myprojectappsrcmaineslayoutpreview_offer_item.xml
loc:二六:三六 - 二六:七四
奸淫* data binding error 奸淫* 
 at org.jetbrains.kotlin.analyzer.AnalysisResult.throwIfError(AnalysisResult.kt:五七)

推举谜底

遗憾的是,该语法默许没有支撑Android数据绑定。您不妨改用@BindingAdapter,以下是完全代码(Kotlin):

 @BindingAdapter("layoutWidth")
fun setLayoutWidth(layout: ViewGroup, dimen: Float) {
 val layoutParams = layout.layoutParams
 layoutParams.width = dimen.toInt()
 layout.layoutParams = layoutParams
}

在应用"app:layoutWidth"XML结构文件中,您乃至不妨将其与其余语法一路应用,比方:

android:layout_width="match_parent"//required
android:layout_height="@dimen/dp_一0二"//required
app:layoutWidth="@{variable.predict ? @dimen/dp_8六 : @dimen/dp_一0二}"

佳了闭于在android.widget.ImageView上找没有到参数典型为int的Android:Layout_Width;属性的树立器的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。