根据我读过的内容,您可以使用gradientDrawable并为其设置三种颜色,例如:
<gradient startColor="#00FF00" centerColor="#FFFF00" endColor="#FFFFFF"/>
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要超过三种颜色,不仅如此,我希望能够设置每个颜色的位置(重量/百分比)?
是否可以使用API或我应该制作自己的自定义drawable?如果我需要制作自己定制的可绘制的,我应该怎么做?
我创建了一个EditTextfor搜索,它在左侧包含一个搜索图标,在图标的右侧:
<EditText
android:id="@+id/Search"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:drawableLeft="@android:drawable/ic_menu_search"
android:drawableRight="@android:drawable/ic_delete"
android:hint="Search Product .." >
</EditText>
Run Code Online (Sandbox Code Playgroud)
我想知道如何清除EditText单击十字按钮时的内容.
先感谢您.
我正在尝试将自定义drawable设置为EditText,如下所示:
所以我写了这个自定义drawable:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingBottom="12dp"
android:paddingLeft="36dp"
android:paddingRight="12dp"
android:paddingTop="12dp">
<item>
<shape>
<corners android:radius="6dp"/>
<solid android:color="@android:color/white"/>
<stroke
android:width="1dp"
android:color="#BBBBBB"/>
</shape>
</item>
<item
android:width="32dp"
android:gravity="left">
<shape android:shape="rectangle">
<size android:width="32dp"/>
<corners
android:bottomLeftRadius="6dp"
android:topLeftRadius="6dp"/>
<solid android:color="#AAAAAA"/>
</shape>
</item>
<item android:left="8dp">
<bitmap
android:gravity="left"
android:src="@drawable/ic_email"
android:tileMode="disabled"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
预览的结果非常好(除了不同的角落尺寸,Android Studio不处理)
但在设备中,它完全不起作用......第二项是拉伸的,不尊重宽度属性.
我知道,我可以用9补丁来做,但我想知道是否可以使用drawables?
我使用了一些我使用Android Studio的Vector Asset Studio通过本地SVG文件导入的图像.
这些图像完美地加载在我的nexus 6p上,然而,在Sony Xperia Z上,它非常像素化,在三星Galaxy s2上,它更糟糕.
根据我的理解,由于文件是xml(矢量)而不是png文件,它应该能够自动调整大小或者我错过了某些东西.
编辑:只是一些额外的信息:该文件最初是一个PNG,但是,我已经使用名为Vector Magic的程序完全转换为矢量文件.我可以在插画家上打开它并编辑每一行等.
通过求解从VectorDrawable改变通过VectorDrawableCompat.create(..)方法来VectorDrawableCompat.谢谢@pskink.
我正在尝试制作如下所示的自定义形状的线性布局
我试图只使一侧弯曲.尝试了角半径,但它没有给出与上面相同的外观.
已尝试过如下背景形状: -
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#3F51B5" />
<padding
android:bottom="7dp"
android:left="7dp"
android:right="7dp"
android:top="7dp" />
<corners
android:bottomLeftRadius="50dp"
android:bottomRightRadius="50dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
它只对角进行四舍五入,并且在增加值时,形状不会被保留,它会变得太圆.我想弯曲线而不是圆角
这是一个可用于radiobutton的选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/ColorPrimaryDark" />
</shape>
</item>
<item>
<layer-list>
<item android:gravity="center_vertical|left" android:left="20dp">
<shape android:shape="oval">
<size android:width="20dp" android:height="20dp" />
<stroke android:color="#ffffff" android:width="2dp" />
</shape>
</item>
<item android:gravity="center_vertical|left" android:left="25dp">
<shape android:shape="oval">
<size android:width="10dp" android:height="10dp" />
<solid android:color="#ffffff" />
</shape>
</item>
</layer-list>
</item>
</layer-list>
</item>
<item android:state_checked="false">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/ColorPrimary" />
</shape>
</item>
<item android:gravity="center_vertical|left"
android:left="20dp">
<shape android:shape="oval">
<size android:width="20dp" android:height="20dp" />
<stroke android:color="#ffffff" android:width="2dp" />
</shape>
</item>
</layer-list>
</item> …Run Code Online (Sandbox Code Playgroud) 使用vector drawables和使用一组.pngAndroid系统图标有什么优缺点?
如果它们用于两种不同的东西,那是什么?
我目前正在使用此代码,但背景没有改变。它仍然显示强调色作为背景。
<com.google.android.material.button.MaterialButton
android:id="@+id/materialButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
app:cornerRadius="32dp"
android:background="@drawable/gradiant_blue"/>
Run Code Online (Sandbox Code Playgroud)
gradiant_blue.xml
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="-45"
android:startColor="#2979FF"
android:endColor="#7C4DFF"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
我目前正在使用
材料组件版本:1.0.0-rc02
android android-button android-drawable material-components-android
流行的Google开发人员Romain Guy发了一篇很好的文章,展示了如何有效地在视图上使用圆角可绘制(在他的代码中称为"StreamDrawable" ).
在纵向模式下,样本本身在我的Galaxy S3上工作得非常好,但我有一些问题:
如果屏幕较小(例如在qvga屏幕上),则显示的图像会被裁剪.
如果我的输入位图太小而不是我希望显示的位置,则输出图像的边缘会被涂抹.即使在Galaxy S3上,当您运行示例代码并且它在横向上时,它看起来很糟糕:

我仍然不确定它(因为我使用缩放图像以使用示例代码的解决方法),但它认为即使这个解决方案在listView中使用时有点慢.也许这有一个renderscript解决方案?
如果我使用setImageDrawable或setBackgroundDrawable并不重要.它必须是drawable本身的东西.
我试过玩变量和bitmapShader,但没有任何效果.可悲的是,TileMode没有拉伸图像的值,只是以某种方式对其进行平铺.
作为一种解决方法,我可以创建一个新的缩放位图,但它只是一种解决方法.当然有一种更好的方法,也不会使用更多的内存.
如何解决这些问题并使用这个优秀的代码?

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#000"
android:centerColor="#00000000"
android:endColor="#000"
android:angle="270"
android:dither="true"
/>
</shape>
Run Code Online (Sandbox Code Playgroud)
这是我尝试的代码,但它最终成为纯黑色.
android ×10
android-drawable ×10
gradient ×2
android-xml ×1
colors ×1
material-components-android ×1
png ×1
shape ×1
svg ×1
vector ×1
xml ×1