我遇到的问题是我的TextInputEditText没有在Android KitKat上膨胀。该应用程序适用于棒棒糖和更新。在检查logcat时,Android KitKat似乎不知道如何查找矢量文件:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_man_user.xml from drawable resource ID #0x7f08009a
即使我的应用徽标也没有出现在KitKat上,因为它是一个矢量。在我的TextInputEditText上,我将图标添加为drawableStart。它抱怨,因为它无法找到我引用的向量。这是XML:
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@android:color/black"
android:hint="@string/username_hint">
<android.support.design.widget.TextInputEditText
android:id="@+id/LoginScreenUsernameEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_man_user"
android:drawablePadding="5dp"
android:maxLines="1"
android:textColor="@android:color/black"
android:inputType="text"
/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@android:color/black"
android:hint="@string/password_hint">
<android.support.design.widget.TextInputEditText
android:id="@+id/LoginScreenPasswordEditText"
android:layout_width="match_parent"
android:textColor="@android:color/black"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:drawableStart="@drawable/ic_locked_padlock"
android:drawablePadding="5dp"
android:maxLines="1"
/>
</android.support.design.widget.TextInputLayout>
我的应用程序gradle文件似乎设置为矢量:
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.koeksworld.homenet"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
有谁知道我能做什么,以便这些载体可以在KitKat上运行?
答案 0 :(得分:0)
Android最近引入了Vector支持(大约2年前我认为)。可以通过将vectorDrawables.useSupportLibrary = true
添加到build.gradle
文件来启用它:
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
您会注意到此新属性仅存在于Gradle插件的2.0版本中。如果您使用的是Gradle 1.5,则可以使用
// Gradle Plugin 1.5
android {
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
Android开发者博客指出,
如果您使用的是AppCompat 23.2.0,则需要设置这些标志。 从AppCompat 23.2.1和标志开始,此要求已经放宽 仅在您希望使用支持向量drawable时才需要。
由于Android如何加载drawable,并非每个接受drawable id的地方(例如在XML文件中)都支持加载矢量drawable。但是AppCompat可以很容易地使用矢量绘图。
将AppCompat与ImageView(ImageButton,FloatingActionButton等)一起使用时,您将能够使用新的app:srcCompat
属性来引用矢量drawable:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_add" />
博客明确指出:
直接引用
app:srcCompat
之外的矢量绘图 在Lollipop之前失败。
有关详细信息,请参阅Android Developers Blog。