我觉得这是一个愚蠢的问题,但我仍然在这里.我有一个图像按钮,我希望每次点击它都能更改它的图像.API似乎表示,最好的方法是在包含选择器和值的drawable文件夹中创建xml资源.然而,当我去创建一个新的android xml资源时,drawables没有选项.我错过了什么?
我在drawable文件夹中有这个形状:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp" />
<solid android:color="#ffffff" />
<stroke android:width="2dp" android:color="#B5B5B5"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
这定义了一个带圆角的矩形,我可以将它作为背景应用于任何面板,如:android:background ="@ drawable/round_corner_shape".
问题就出现了:我的应用程序中有几个面板,形状与背景相同,但对于每个形状,我想要一个不同的边框(笔触)颜色.我不想创建3个形状,唯一的区别在于笔触颜色.是否可以在运行时更改行程值?
我使用以下代码来获得圆角和彩色轮廓:
<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)
<gradient
android:startColor="@color/white"
android:endColor="@color/white" />
<corners
android:bottomRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp"/>
<stroke
android:width="5dip"
android:color="@color/black" />
Run Code Online (Sandbox Code Playgroud)

图像显示我现在正在获取的内容.由于这个原因stroke,圆角仅位于布局的外边缘上,黑色轮廓的内边缘形成具有锐边的矩形.如何将锐边转换为圆角?
我用drawable创建了聊天气泡看起来很好,现在我想在drawable下面添加阴影效果,这样就可以产生3d效果.我不想使用9-pitch图像.我只是想知道如何在这个drawable上添加阴影效果.我的代码是
---- right_bubble_chat_drawable
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="15dp" />
<solid android:color="@color/chatrightbubbleColor" />
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
<size
android:height="@dimen/normal_button_height"
android:width="@dimen/normal_button_width" />
Run Code Online (Sandbox Code Playgroud)
---用于角落指针'chat_laftarraow'
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item >
<rotate
android:fromDegrees="90"
android:toDegrees="-90"
android:pivotX="50%"
android:pivotY="50%" >
<rotate
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="-40%"
android:pivotY="86%" >
<shape
android:shape="rectangle" >
<stroke android:color="#00aaef" android:width="1dp"/>
<solid
android:color="#00aaef" />
</shape>
</rotate>
</rotate>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
-------我正在使用它们
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<View
android:id="@+id/left_chatArror"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:layout_marginTop="6dp"
android:background="@drawable/chat_laftarraow"/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="220dp" …Run Code Online (Sandbox Code Playgroud) 我试图使用xml drawable绘制它.
<ProgressBar
android:id="@+id/onboarding_activity_progress_bar"
android:layout_gravity="center"
android:padding="10dp"
android:layout_width="120dp"
android:layout_height="120dp"
style="?android:attr/progressBarStyleHorizontal"
android:progressDrawable="@drawable/progressbar_onboarding_view"
tools:progress="60"/>
Run Code Online (Sandbox Code Playgroud)
Progressbar_onboarding_view.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape android:useLevel="false"
android:innerRadiusRatio="2.0"
android:shape="ring"
android:thickness="10dp">
<solid android:color="@color/progress_bar_background_color" />
<corners android:radius="50dp"/>
</shape>
</item>
<item android:id="@android:id/progress">
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:useLevel="true"
android:innerRadiusRatio="2.0"
android:shape="ring"
android:thickness="10dp">
<solid android:color="@color/progress_bar_color" />
</shape>
<!--
<scale
android:drawable="@drawable/progressbar_round_corner"
android:scaleWidth="98%" /> -->
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
progressbar_rounded_corner.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners
android:radius="10dp"/>
<solid android:color="@android:color/white" />
<stroke
android:width="1dp"
android:color="@android:color/holo_red_dark" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我尝试使用scale参数,但进度角没有改变.我不确定如何实现圆角.请帮助我真的很感激.
我想知道是否有人知道为自定义按钮生成xml选择器文件的工具.我有点累了创建按钮,将它们转换为.9.png文件,然后在xml中复制和粘贴自定义选择器...
我知道这些工具:
http://www.androidicongenerator.net/
http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html
因为它们在生成资源/资源方面很方便,我想念选择4个图像并生成一个随时可用的选择器xml,它输出如下内容:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
<item android:state_pressed="true" android:background="@drawable/img_pressed" />
<!-- focused -->
<item android:state_focused="true" android:background="@drawable/img_focussed" />
<!-- default -->
<item android:background="@drawable/img_default" />
</selector>
Run Code Online (Sandbox Code Playgroud)
我在考虑自己创造一个,但不敢相信没有人已经做过:)
谢谢
我有三个9补丁PNG,它们组成了按钮的背景(左侧,中间,右侧).我想将这三个图像组合在一个drawable中,我可以将其指定为XML中按钮的背景,类似于:
res/drawable/button_background.xml:
<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/button_left_side" />
<nine-patch android:src="@drawable/button_middle" />
<nine-patch android:src="@drawable/button_right_side" />
Run Code Online (Sandbox Code Playgroud)
res/layout/main.xml:
<button android:background="@drawable/button_background" />
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我试图将一个有光泽的xml可绘制渐变作为布局的背景.我已经在使用开始颜色和最终颜色枯燥的线性渐变.
<item>
<shape>
<gradient
android:angle="90"
android:startColor="#242424"
android:endColor="#4e4e4e"
android:type="linear" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
有没有办法控制其流量范围?请一些帮助.
编辑:
好吧,我做了一个小方法来获得一个漂亮的光滑外观标题栏,
线性布局(带有渐变 - 可绘制背景,分别指定所有开始和结束颜色值)这是图标,(我使用带有透明BG的图像按钮),并在此另一个相对布局(可能是可绘制渐变或固定的灰色 - 用于光泽度 - android:background ="#20f0f0f0")这里20定义了Alpha值.
PS,这可能不是一个正确的解决方法,但我对此非常满意,因为与9个补丁PNG文件相比,根据客户需求切换主题要快得多(嘿,BTW这只是我对它的意见)
这个链接对此非常有用,
我想为我的Android按钮制作一个drawable,定义为drawable.我发现我可以通过使用一个矩形来设置所有边框,但是当我想要三面时,我有点卡住了.我希望例如打开顶部或底部.
谁能告诉我怎么做?
我定义了以下drawable my_background_drawable.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="@color/color_stateful" />
</shape>
</item>
<item android:drawable="@drawable/selector_png_drawable" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)
我还定义了以下颜色状态列表资源color_stateful.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="#FF00ff00"/>
<item android:color="#FFff0000"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
当我将my_background_drawable某个视图设置为某个视图的背景时,我无法观察到color_stateful.xml为我的形状定义的颜色的任何变化,而视图状态实际上已更改(selector_png_drawable.xml是指示符).
但是,当我通过my_background_drawable.xml以下方式修改我时,一切都很好:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- This doesn't work
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="@color/color_stateful" />
</shape>
</item>
-->
<item>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="#FF00ff00" />
</shape>
</item> …Run Code Online (Sandbox Code Playgroud)