在Android中,Drawable是“可以绘制的东西”的一般抽象。
Badge Drawable 正在从视图中切出并且未以正确的方式显示 Android Kotlin
嘿我想显示徽章可绘制。我尝试了这里的代码Does BadgeDrawable不适用于FrameLayout中的视图,例如按钮,图像,文本视图等?,BadgeDrawable不会出现在eleme上...
如何在EditText中添加两个drawableRight?
我可以轻松地在 android 中的 EditText 中添加一个drawableRight,并且在单击事件时在一个drawableRight的情况下完美工作。但我需要在 EditText 中有两个drawableRight。 那么,我怎样才能添加两个
我已经看到了线性渐变是如何完成的,就像这个答案:我们可以在 xml 中为 android 背景制作多颜色渐变吗? 每次我尝试使用径向渐变时,视口都无法...
在 compose 中创建 Drawable 实例时出现问题
我需要迁移旧的java代码,该代码创建一个Drawable实例,它是一个渐变,其起始颜色在上部,结束颜色在底部。 它在java中完美运行...
为什么当我触摸 ImageView 时,应用于 ImageView 的状态列表可绘制对象不使用该可绘制对象作为按下状态?
我的 ImageView 在 XML 中定义如下: 我的 ImageView 在 XML 中定义如下: <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/fragment_imageView" android:src="@drawable/ic_photo" android:background="@drawable/button_state_list_drawable" /> button_state_list_drawable.xml 是: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/button_pressed_state_drawable" android:state_pressed="true" /> <item android:drawable="@drawable/button_enabled_state_drawable" android:state_enabled="true" /> </selector> button_pressed_state_drawable.xml 是: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <size android:width="50dp" android:height="50dp" /> <padding android:left="25dp" android:right="25dp" android:top="25dp" android:bottom="25dp" /> <stroke android:color="#fff" android:width="1dp" /> <solid android:color="#1aafd0" /> </shape> button_enabled_state_drawable.xml 是: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <size android:width="50dp" android:height="50dp" /> <padding android:left="25dp" android:right="25dp" android:top="25dp" android:bottom="25dp" /> <stroke android:color="#fff" android:width="1dp" /> <solid android:color="@android:color/transparent" /> </shape> 问题是,当我单击/触摸 ImageView 时,button_pressed_state_drawable 似乎没有被使用,即我看不到正在运行的 <solid android:color="#1aafd0" />(这基本上是两个可绘制对象之间的唯一区别) ,即背景颜色仍然是透明的,而不是变成蓝色。我哪里搞砸了? 我认为你的ImageView不是clickable。 尝试使用 ImageView.setClicked(true)使其可点击。 或 android:clickable="true" android:focusable="true" 还要确保您的 image resource 没有覆盖您的背景。 这就是我所做的,效果很好。 <ImageView android:id="@+id/fragment_imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/button_state_list_drawable" android:clickable="true" android:focusable="true" android:padding="20dp" android:src="@drawable/ic_launcher"/> <item android:drawable="@drawable/button_pressed_state_drawable" android:state_pressed="true" /> <item android:drawable="@drawable/button_enabled_state_drawable" android:state_enabled="true" /> 按钮可以同时被“按下”和“启用”。尝试从第二项中删除 android:state_enabled="true" 。
对于 Android 应用程序,在可绘制目录中存储多个图像尺寸更好,还是在资产中仅存储单个大图像更好?
我正在开发一个本机Android应用程序,并正在考虑管理图像资源的最佳方式。传统上,我们被建议将每个图像的多种尺寸存储在各种可绘制文件夹中(
我想将位图设置为ImageButton的src,并使其在按下时变得部分透明。然而,选择器中的 android:alpha 属性似乎没有做任何事情。 我已经定义...
我使用 Markwon 库来显示带有图像的 Markdown 文本。当图像与文本在同一行时,它被放置在文本下方。如何使图像居中? 现在: 预计: 我已经尝试过
在 Markwon 库中,我想添加一个插件,如果以 markdown 格式写入 ![alt text](drawable://icon_name),它将显示应用程序资源中的图像。 下面的代码有效。但是tintCo...
我正在尝试在 RecyclerView 中使用以下代码来使用可绘制着色 可绘制的 likeDrawable = ContextCompat.getDrawable(getActivity(), R.drawable.ic_thumb_up); 像WrappedDrawabl一样可绘制...
我正在尝试实现这个进度条设计: 我当前的代码会产生以下结果: 这是代码: 我正在尝试实现这个进度条设计: 我当前的代码会产生以下结果: 这是代码: <item android:id="@android:id/background"> <shape> <corners android:radius="8dp"/> <solid android:color="@color/dirtyWhite"/> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="8dp"/> <solid android:color="@color/colorPrimaryDark"/> </shape> </clip> </item> 我的进度条: <ProgressBar android:id="@+id/activeProgress" style="?android:attr/progressBarStyleHorizontal" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_weight="1" android:progress="10" android:progressDrawable="@drawable/rounded_corners_progress_bar"/> 我尝试在 <size> 中的 <shape> 上添加 <clip 属性以使进度形状变小一点,但它不起作用。另外,进度条是平坦的,我想根据设计弯曲。为了实现设计我需要改变什么? 如何让进度形状变小一点? 您需要给进度项一点填充,如下所示: <item android:id="@android:id/progress" android:top="2dp" android:bottom="2dp" android:left="2dp" android:right="2dp"> 如何让进度条按照设计弯曲? 将 <clip></clip> 元素替换为 <scale android:scaleWidth="100%"></scale>。这将使形状在生长过程中保持其形状,而不是被切断。 不幸的是,一开始它会产生一些不需要的视觉效果 - 因为形状角没有足够的空间来绘制。但对于大多数情况来说这可能已经足够了。 完整代码: <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <corners android:radius="8dp"/> <solid android:color="@color/dirtyWhite"/> </shape> </item> <item android:id="@android:id/progress" android:top="1dp" android:bottom="1dp" android:left="1dp" android:right="1dp"> <scale android:scaleWidth="100%"> <shape> <corners android:radius="8dp"/> <solid android:color="@color/colorPrimaryDark"/> </shape> </scale> </item> </layer-list> 通过材质组件库,您可以使用 LinearProgressIndicator 和 app:trackCornerRadius 属性。 比如: <com.google.android.material.progressindicator.LinearProgressIndicator android:indeterminate="true" app:trackThickness="xxdp" app:trackCornerRadius="xdp"/> 它也适用于确定进度指示器,删除 android:indeterminate="true" 或使用 android:indeterminate="false" 注意:至少需要版本1.3.0。 感谢 Georgi Koemdzhiev 提出了一个很好的问题和图片。对于那些想要制作类似他的作品的人,请执行以下操作。 1) 为 ProgressBar 创建背景。 progress_bar_background.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners android:radius="3dp" /> <stroke android:color="@color/white" android:width="1dp" /> </shape> 2) 为 ProgressBar 创建一个比例。 curved_progress_bar.xml: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <corners android:radius="2dp" /> <solid android:color="@color/transparent" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="2dp" /> <solid android:color="#ffff00" /> </shape> </clip> </item> </layer-list> 3) 在布局文件中添加 ProgressBar。 <FrameLayout android:layout_width="match_parent" android:layout_height="6dp" android:layout_marginStart="20dp" android:layout_marginTop="10dp" android:layout_marginEnd="20dp" android:background="@drawable/progress_bar_background" > <ProgressBar android:id="@+id/progress_bar" style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="4dp" android:layout_margin="1dp" android:indeterminate="false" android:progressDrawable="@drawable/curved_progress_bar" /> </FrameLayout> <com.google.android.material.progressindicator.LinearProgressIndicator android:id="@+id/pb_team2" android:layout_width="0dp" android:layout_height="8dp" android:layout_marginStart="55dp" android:layout_marginEnd="15dp" app:trackColor="#E0E0E0" app:trackCornerRadius="6dp" app:trackThickness="8dp" android:progress="2" app:indicatorColor="@color/red" android:scaleX="-1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/tv_versus" app:layout_constraintTop_toBottomOf="@id/tv_team2_score" /> 您可以使用内部进度颜色、边框来实现进度条 颜色,空进度与透明色。 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <corners android:radius="15dip" /> <stroke android:width="1dp" android:color="@color/black" /> </shape> </item> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="5dip" /> <gradient android:startColor="@color/black" android:centerColor="@color/trans" android:centerY="0.75" android:endColor="@color/black" android:angle="270" /> </shape> </clip> </item> <item android:id="@android:id/progress" > <clip> <shape> <corners android:radius="5dip" /> <gradient android:startColor="@color/black" android:endColor="@color/black" android:angle="270" /> </shape> </clip> </item> </layer-list> 在 build.gradle(Module) 添加材质依赖 实施'com.google.android.material:material:1.6.0' 返回activity_main.xml。添加 <com.google.android.material.progressindicator.LinearProgressIndicator> ... app:trackCornerRadius="3dp" </com.google.android.material.progressindicator.LinearProgressIndicator> 希望它能完成你的工作。 您可以使用 Drawable 创建自定义 progressbar。 1) 创建第一个可绘制对象作为 custom_progress_bar_horizontal.xml <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <padding android:bottom="2dip" android:left="2dip" android:right="2dip" android:top="2dip" /> <corners android:radius="5dip" /> <gradient android:angle="270" android:centerColor="#80385682" android:centerY="0.50" android:endColor="#80577AAF" android:startColor="#80222F44" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="5dip" /> <gradient android:angle="90" android:endColor="#FF1997E1" android:startColor="#FF0E75AF" /> </shape> </clip> </item> </layer-list> 2) 在style.xml文件中创建样式。 <style name="CustomProgressBar" parent="android:Widget.ProgressBar.Horizontal"> <item name="android:indeterminateOnly">false</item> <item name="android:progressDrawable">@drawable/custom_progress_bar_horizontal</item> <item name="android:minHeight">10dip</item> <item name="android:maxHeight">20dip</item> </style> 3) 在项目中的任何地方使用。 <ProgressBar android:id="@+id/mProgressBar" style="@style/CustomProgressBar" android:layout_width="match_parent" android:layout_height="wrap_content" /> 输出:- 创造新风格 <style name="ProgressBar.Horizontal.Rounded" parent="Widget.AppCompat.ProgressBar.Horizontal"> <item name="android:progressDrawable">@drawable/progress_horizontal_material</item> </style> 创建一个名为“progress_horizontal.xml”的新绘图 <?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2014 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:gravity="center_vertical|fill_horizontal"> <shape android:shape="rectangle" android:tint="?attr/colorControlNormal"> <corners android:radius="8dp" /> <size android:height="4dp" /> <solid android:color="@color/white_disabled" /> </shape> </item> <item android:id="@android:id/secondaryProgress" android:gravity="center_vertical|fill_horizontal"> <scale android:scaleWidth="100%"> <shape android:shape="rectangle" android:tint="?attr/colorControlActivated"> <corners android:radius="8dp" /> <size android:height="4dp" /> <solid android:color="@color/white_disabled" /> </shape> </scale> </item> <item android:id="@android:id/progress" android:gravity="center_vertical|fill_horizontal"> <scale android:scaleWidth="100%"> <shape android:shape="rectangle" android:tint="?attr/colorControlActivated"> <corners android:radius="8dp" /> <size android:height="4dp" /> <solid android:color="@android:color/white" /> </shape> </scale> </item> </layer-list> 创建一个名为“white_disabled.xml”的新颜色 <?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2015 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:alpha="?android:attr/disabledAlpha" android:color="@android:color/white" /> </selector> 然后在您的布局中使用它,如下所示: <ProgressBar android:id="@+id/progress_bar_indicator" style="@style/ProgressBar.Horizontal.Rounded" android:layout_width="match_parent" android:layout_height="wrap_content" /> 在drawable文件夹中创建progress_bg.xml文件 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <solid android:color="@color/grey" /> <corners android:radius="10dp" /> </shape> </item> <item android:id="@android:id/progress"> <scale android:scaleWidth="100%"> <shape> <gradient android:angle="270" android:endColor="#048B7B" android:startColor="#00BBA5" /> <corners android:radius="10dp" /> </shape> </scale> </item> </layer-list> 在ProgressBar中使用上面的progress_bg.xml作为progressDrawable属性(例如android:progressDrawable="@drawable/progress_bg")。
如何在 supportActionBar.setHomeAsUpIndicator() 中为操作栏应用正确的颜色? 我最终在充气时获得默认图标色调颜色,而不是操作栏色调颜色,
我最近在我的应用程序中进行了一些更改,奇怪的是,从那时起我就遇到了这些错误,我花了 2 天的时间来解决它,但我无法解决它 我已经检查了每个布局、可绘制对象和图像,什么都没有......
如何将我的 Android 矢量绘图转换为 SVG? 不要将其标记为重复问题。我已经尝试过这些方法但没有用,我尝试过 https://shapeshifter.design/ 网站,...
我有一个自定义可绘制对象,其中包含形状、笔画和颜色,我希望过渡从一个可绘制对象更改为另一个可绘制对象。我的问题是,正确的 attributeName 和自定义 val 是什么...
Rtl 对AppCompatEditText Android 的drawableEnd 的支持
我像这样使用这个AppCompatEditText 我正在像这样使用这个AppCompatEditText <com.google.android.material.textfield.TextInputLayout android:id="@+id/tilCountry" style="@style/LoginTextInputLayoutStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dpSixteen" android:layout_marginEnd="@dimen/dpSixteen" android:layout_marginBottom="@dimen/dpTwenty" android:background="@null" android:hint="@string/chooseCountry" app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout" app:hintTextColor="@color/moonRaker"> <androidx.appcompat.widget.AppCompatEditText android:id="@+id/etCountry" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableEnd="@drawable/ic_blue_right" android:drawableTint="@color/blue" android:focusable="true" android:imeOptions="actionNext" android:textAppearance="@style/SignupEditText" tools:targetApi="m" /> </com.google.android.material.textfield.TextInputLayout> 当用户将语言更改为阿拉伯语时,rtl 看起来一切都很好,但是 drawableEnd 不从右到左改变。 选择带有镜像效果的阿拉伯语时,箭头必须切换到左侧。 我的可绘制代码 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="7.41dp" android:height="12dp" android:viewportWidth="7.41" android:viewportHeight="12" **android:autoMirrored="true"**> <path android:pathData="M0,10.58 L4.58,6 0,1.41 1.41,0l6,6 -6,6Z" android:fillColor="#1b47db"/> </vector> 这里出了什么问题? 如果语言是阿拉伯语,则Drawable应从头开始设置,否则应从末尾开始设置。 etCountry.setCompoundDrawablesWithIntrinsicBounds(0, 0, @drawable/ic_blue_right, 0); //Right side drawable etCountry.setCompoundDrawablesWithIntrinsicBounds(@drawable/ic_blue_right, 0, 0, 0); //Left side drawable 试试这个方法
我在Android上有exoplayer应用程序。我创建了 youtube 的双击手势,可以用动画向前或向后跳 10 秒!如何在双线上创建这个具有波纹效果的半圆...
Android - 如何在具有两种或多种颜色的矢量绘图上设置色调
我喜欢矢量绘图,事实上我可以使用简单的色调属性更改每个布局中的色调,如下所示: 我喜欢矢量绘图,事实上我可以使用简单的色调属性更改每个布局中的色调,如下所示: <ImageView android:id="@+id/image_payment_cash" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint="@color/color1" android:src="@drawable/ic_cash" /> 但我想知道是否有一种方法可以为同一向量(对于多色向量)指定两种或多种色调? 所以可以这样设置: <ImageView android:id="@+id/image_payment_cash" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tint1="@color/color1" android:tint2 = "@color/color2" android:src="@drawable/ic_cash" /> 不,默认情况下,无法在 XML 中为 Vector Drawable 的多种不同颜色着色。 您可以在 Java/Kotlin 中以编程方式将可绘制文件膨胀为 VectorDrawable 类,然后遍历每一层,然后单独更改颜色。 通过使用相同的代码,您可以创建一个具有“tint1”和“tint2”属性的自定义 ImageView。 如果您使用 API 21 以下的 Vector Drawables,请注意 Android 框架使用不同的类来反向移植某些 VD 元素。 porterduff 模式无法帮助在图像中着色两种不同的颜色?
我有一个 Android 资源可绘制对象,我想在对绘制对象的 BitmapShader 调用中使用它。 我在尝试将此 Android 可绘制对象转换为位图时不断遇到问题。 我努力了: 可绘制
我收到异常: 致命异常:android.content.res.Resources$NotFoundException:Drawable org.radarcns.detail:drawable/status_searching,资源 ID #0x7f080130 安卓引起的。