android - 找不到材料芯片的“app:closeIconVisible”
问题描述
我正在尝试通过支持库使用材料组件。使用以“app:....”开头的芯片属性时出现以下错误。我不喜欢迁移到 androidx,因为它还不稳定。我应该下载 android studio 3.2 并迁移到 androidx 吗?请给我一些建议好吗?提前感谢您的帮助。
错误:找不到属性“com.tarifis.tarifis:closeIconVisible”。
<android.support.design.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="some text"
app:closeIconVisible="visible"
app:closeIcon="@drawable/ic_close_black_24dp"
/>
这是gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion '27.0.3'
defaultConfig {
applicationId "com.tarifis.tarifis"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
repositories {
maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.1'
implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
implementation 'com.android.support:recyclerview-v7:28.0.0-alpha3'
implementation 'com.koushikdutta.ion:ion:2.1.6'
implementation 'com.android.support:support-v4:28.0.0-alpha3'
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support:design:28.0.0-alpha3'
//implementation 'com.google.android.material:material:1.0.0-rc01'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
}
解决方案
幸运的是,源是开放的。下面是来自源代码的片段,它显示了哪些属性可用于我正在使用的库版本。由于您使用的库版本与我的不同,我建议您自己在工作室中自行查找。
为了找出答案,只需 Ctrl 单击xml 中的com.google.android.material.chip.ChipGroup并执行com.google.material.android.chip.ChipDrawable类的loadFromAttributes()方法。
以下是供您快速参考的片段:
private void loadFromAttributes(AttributeSet attrs, @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
TypedArray a = ThemeEnforcement.obtainStyledAttributes(this.context, attrs, styleable.ChipDrawable, defStyleAttr, defStyleRes);
this.setChipBackgroundColor(MaterialResources.getColorStateList(this.context, a, styleable.ChipDrawable_chipBackgroundColor));
this.setChipMinHeight(a.getDimension(styleable.ChipDrawable_chipMinHeight, 0.0F));
this.setChipCornerRadius(a.getDimension(styleable.ChipDrawable_chipCornerRadius, 0.0F));
this.setChipStrokeColor(MaterialResources.getColorStateList(this.context, a, styleable.ChipDrawable_chipStrokeColor));
this.setChipStrokeWidth(a.getDimension(styleable.ChipDrawable_chipStrokeWidth, 0.0F));
this.setRippleColor(MaterialResources.getColorStateList(this.context, a, styleable.ChipDrawable_rippleColor));
this.setChipText(a.getText(styleable.ChipDrawable_chipText));
this.setTextAppearance(MaterialResources.getTextAppearance(this.context, a, styleable.ChipDrawable_android_textAppearance));
this.setChipIconEnabled(a.getBoolean(styleable.ChipDrawable_chipIconEnabled, false));
this.setChipIcon(MaterialResources.getDrawable(this.context, a, styleable.ChipDrawable_chipIcon));
this.setChipIconSize(a.getDimension(styleable.ChipDrawable_chipIconSize, 0.0F));
this.setCloseIconEnabled(a.getBoolean(styleable.**ChipDrawable_closeIconEnabled**, false));
this.setCloseIcon(MaterialResources.getDrawable(this.context, a, styleable.ChipDrawable_closeIcon));
this.setCloseIconTint(MaterialResources.getColorStateList(this.context, a, styleable.ChipDrawable_closeIconTint));
this.setCloseIconSize(a.getDimension(styleable.ChipDrawable_closeIconSize, 0.0F));
this.setCheckable(a.getBoolean(styleable.ChipDrawable_android_checkable, false));
this.setCheckedIconEnabled(a.getBoolean(styleable.ChipDrawable_checkedIconEnabled, false));
this.setCheckedIcon(MaterialResources.getDrawable(this.context, a, styleable.ChipDrawable_checkedIcon));
this.setShowMotionSpec(MotionSpec.createFromAttribute(this.context, a, styleable.ChipDrawable_showMotionSpec));
this.setHideMotionSpec(MotionSpec.createFromAttribute(this.context, a, styleable.ChipDrawable_hideMotionSpec));
this.setChipStartPadding(a.getDimension(styleable.ChipDrawable_chipStartPadding, 0.0F));
this.setIconStartPadding(a.getDimension(styleable.ChipDrawable_iconStartPadding, 0.0F));
this.setIconEndPadding(a.getDimension(styleable.ChipDrawable_iconEndPadding, 0.0F));
this.setTextStartPadding(a.getDimension(styleable.ChipDrawable_textStartPadding, 0.0F));
this.setTextEndPadding(a.getDimension(styleable.ChipDrawable_textEndPadding, 0.0F));
this.setCloseIconStartPadding(a.getDimension(styleable.ChipDrawable_closeIconStartPadding, 0.0F));
this.setCloseIconEndPadding(a.getDimension(styleable.ChipDrawable_closeIconEndPadding, 0.0F));
this.setChipEndPadding(a.getDimension(styleable.ChipDrawable_chipEndPadding, 0.0F));
a.recycle();
}
从代码中可以看出,该库没有app:closeIconVisible="visible"属性。好像你的版本也没有。考虑使用 app:closeIconEnabled="false" 隐藏并设置可绘制对象(如您所见)以显示。尽管我建议您在代码库允许的情况下迁移到最新版本,因为这些库在 alpha 版本中经常更新。
快乐编码!
推荐阅读
- scala - 使用 Monad 处理副作用
- php - 通过simplexml将记录写入xml文件?
- javascript - 如何在 macOS 终端的 NodeJS 控制台上键入多行 JavaScript 代码?
- android-studio - 如何使用 Flutter 在 android studio 中为代码折叠做区域块
- r - 如何获得每个不同的唯一行的最大值?
- spacy - spacy 模型 en_core_web_sm 未检测到语言实体
- php - 使用 WHMCS 本地 API 时,Vue 表单不使用 PHP 文件提交
- jquery - 在 Gridsome 中使用 jQuery 和 Popper.js
- c# - 如何在 .NET Core 中跨平台执行 shell 命令?
- c++ - 如何安装库
?