- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在我的 Android 应用程序中使用矢量绘图。我用过http://android-developers.blogspot.com/2016/02/android-support-library-232.html .但我需要在 drawableLeft 中设置矢量 drawble。
这是我的矢量图
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/colorPrimary"
android:pathData="M12,17c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1s3.1,1.39 3.1,3.1v2L8.9,8L8.9,6zM18,20L6,20L6,10h12v10z"/>
布局中
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayoutPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true" android:drawableLeft="@drawable/ic_lock" android:drawablePadding="4dp"/>
</android.support.design.widget.TextInputLayout>
错误
Caused by: android.view.InflateException: Binary XML file line #52: Error inflating class EditText
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.tekhinno.myglukose.LoginActivity.onCreate(LoginActivity.java:66)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_lock.xml from drawable resource ID #0x7f020054
at android.content.res.Resources.loadDrawable(Resources.java:2096)
at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
at android.widget.TextView.<init>(TextView.java:806)
at android.widget.EditText.<init>(EditText.java:60)
at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:59)
at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:55)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:112)
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1013)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1072)
at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$WrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:280)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.tekhinno.myglukose.LoginActivity.onCreate(LoginActivity.java:66)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
at android.content.res.Resources.loadDrawable(Resources.java:2092)
at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
at android.widget.TextView.<init>(TextView.java:806)
at android.widget.EditText.<init>(EditText.java:60)
at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:59)
at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:55)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:112)
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1013)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1072)
at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$WrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:280)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.tekhinno.myglukose.LoginActivity.onCreate(LoginActivity.java:66)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
最佳答案
在上面的 VectorDrawable 文件中,路径数据不正确。它不包含路径数据中的控制字符。出于测试目的,请执行以下操作:
删除ic_lock.xml 文件的所有内容。然后将以下代码(复制并粘贴)放入其中。
<vector android:height="24dp" android:viewportHeight="121"
android:viewportWidth="83" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#00000000"
android:pathData="M5,15h264v9h-1.2c-3.1,0 -4.7,1.3 -4.7,3.9c0,3.1 1.9,4.7 5.7,4.7c2.2,0 4.3,-1.3 6.2,-3.9c1.9,-2.5 2.9,-5.3 2.9,-8.4c0,-5.1 -1.7,-9.4 -5.2,-13c-3.5,-3.5 -8.2,-5.3 -14.2,-5.3c-3.1,0 -5.9,0.5 -8.6,1.5c-2.7,0.9 -4.9,2.6 -6.5,5.1c-1.7,2.4 -2.5,5.9 -2.5,10.3c0,0.9 1.1,7.1 3.4,9.8c2.2,2.7 4.3,4.1 6.1,4.1c0.2,0 0.5,0 0.9,-0.1c0.1,-0.1 0.2,-0.1 0.3,-0.1v9.3c-4.2,0 -7.8,-1.2 -10.9,-3.5s-5.5,-5.2 -7.2,-8.6s-2.6,-6.8 -2.6,-10c0,-8.7 2.5,-15.4 7.6,-20c5,-4.6 11.7,-6.9 19.8,-6.9c5.7,0 0.7,1.3 15,4c4.4,2.7 0.8,6 10.3,10.1c2.5,4 3.7,8.1 3.7,12.2c0,5.9 -1.8,11 -5.3,15.4s-7.5,6.6 -11.9,6.6c-5.4,0 -9.5,-1.3 -12.3,-3.8c-2.7,-2.5 -4.2,-5.9 -4.3,-10.2l1.5,-4.3h-11.4v-7.9"
android:strokeColor="#104" android:strokeLineCap="round" android:strokeWidth="3"/>
<path android:fillColor="#00000000"
android:pathData="M23,40l2,13l-13,-2" android:strokeColor="#104"
android:strokeLineCap="round" android:strokeWidth="3"/>
<path android:fillColor="#00000000"
android:pathData="M36,40l-1,13l13,-3" android:strokeColor="#D25"
android:strokeLineCap="round" android:strokeWidth="3"/>
<path android:fillColor="#00000000"
android:pathData="M23,80l7,-11l7,11" android:strokeColor="#8CE"
android:strokeLineCap="round" android:strokeWidth="3"/>
<path android:fillColor="#00000000"
android:pathData="M8,4c-8,9 -5,30 17,49"
android:strokeColor="#FD4" android:strokeLineCap="round" android:strokeWidth="6"/>
<path android:fillColor="#00000000"
android:pathData="M79,25c-22,-6 -32,14 -42,26"
android:strokeColor="#D25" android:strokeLineCap="round" android:strokeWidth="6"/>
<path android:fillColor="#00000000"
android:pathData="M10,118c23,-8 20,-30 20,-44"
android:strokeColor="#8CE" android:strokeLineCap="round" android:strokeWidth="6"/>
<path android:fillColor="#00000000"
android:pathData="M20,48l10,12v13m0,-13l10,-12"
android:strokeColor="#FFF" android:strokeLineCap="round" android:strokeWidth="6"/>
<path android:fillColor="#00000000"
android:pathData="M20,48l10,12v13m0,-13l10,-12"
android:strokeColor="#000" android:strokeLineCap="round" android:strokeWidth="5"/>
</vector>
您必须在 TextView 的左侧看到多色图像。我在这里测试了它,它正在工作。此图像中有九条路径。一两个足以让您进行测试和调整。
顶部有宽度、高度、视口(viewport)宽度和视口(viewport)高度。两种情况下的宽高比应该相同。然后保持纵横比。如果增加视口(viewport)大小,则会导致缩小(图像大小)。你可以调整。
希望这对您有所帮助。
关于android - 如何将矢量可绘制对象的大小设置为 drawableLeft 可绘制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39114818/
1.我不想为每个组件编写太多选择器。 2.我尝试编写一个EditText的子类,命名为EditTextDrawable。然后我这样做了: public EditTextWithDrawable(Con
我目前有一个 XML 中的按钮代码: 但是,我收到一个错误消息:Error: No resource found that matches the given name (at 'drawableL
我在 LinearLayout 中有一个按钮,我在其中分配了一个 XML 中的 drawableLeft,如下所示: 这工作正常,按钮看起来像预期的那样。 我想以编程方式更改图像以显示可用新闻的数量
我有一个带有 drawableLeft 的 Button,当我点击它时,我只想更改另一张图片的 drawableleft。我必须使用什么 Java 代码? XML: 最佳答案 这将在您按钮的 onC
我无法将我的 drawableLeft 图标居中。 我可以轻松地将图标放在文本的左侧,但如果我将引力设置为居中,则只有文本居中,而没有图标。 这就是我想要的: 这是我的: 10dp
在 XML 中,我们可以使用这种方式设置 drawableLeft: 如何以编程方式做同样的事情? 最佳答案 是的,使用 setCompoundDrawablesWithIntrinsicB
我有一个带有文本的按钮,左侧有一个可绘制对象。有什么方法可以在保持其纵横比的同时使可绘制比例达到适当的大小(填充按钮的高度)? 我的布局的相关摘录: 最佳答案 您可以根据按钮的尺寸
我找到了这个问答 Is it possible to change the left drawable of a Button in Selector xml?它对我不起作用。我试过这个:
我正在使用一个按钮 并使用 : 更改其文本颜色 zoom.setTextColor(Color.parseColor("voilet")); 但无法理解如何更改其图像?? 最佳答案 试试这个: in
简而言之,这就是我想要添加的自定义按钮,如下所示: IMG 是我的 mipmap 文件夹中的一个 .png 文件,SOME TEXT 只是一个字符串值。添加的虚线只是作为图像中的分隔符,而不是按钮中的
这个问题在这里已经有了答案: how to change a drawableLeft icon size on a button? (10 个答案) 关闭 5 年前。 我已经在寻找一些解决方案 h
如何放置 drawableLeft 和 AppCompatButton 的按钮文本,如下图所示? 我已尝试应用 paddingLeft,但文本从 drawable 向右移动。 到目前为止,结果看起来
有没有办法在 editText 中的 drawable 上将 alpha 设置为 drawableLeft? 我从 Google 的素材图标库中获取了图标。图标是 alpha
当使用 drawableLeft 使用带有额外 drawable 的复选框(除了用于复选框的那个)时,两个 drawable 相互重叠。 checkbox设置没什么特别的,这里: 实际结果: 预期结
我正在尝试在我的 Android 应用程序中使用矢量绘图。我用过http://android-developers.blogspot.com/2016/02/android-support-libra
我通过以下方式以编程方式添加/删除 drawableLeft: ((TextView)view).setCompoundDrawablesWithIntrinsicBounds(R.drawable.
我将图像设置到 RadioButton 的 drawableLeft,但它太大了。我想设置图像的高度、宽度和 scaleType 以使其看起来不错,就像在 ImageView 中一样: android
我在 4 个按钮上添加了一些图标,它们在按钮旁边看起来很大。那么如何调整它们的大小呢?我在按钮上使用了 drawableLeft 来添加图标。 可绘制对象称为交易、奖杯、拼图和扩音器。图标太大了。co
这是我的布局: 我面临的问题是可绘制复选标记。我将如何将它与文本对齐,它们都在按钮内居中?这是 XML: 应用 android:gravit
如何使用选择器更改按钮的 DrawableLeft 图像? 我正在使用下面的选择器文件和可绘制的形状 XML。单击按钮时,图像不会改变。 toolbar_butto
我是一名优秀的程序员,十分优秀!