【发布时间】:2013-02-24 21:23:42
【问题描述】:
早安,
我想创建一个可以添加到我的 Android 应用程序视图的新对象,
我只是想让一个圆圈显示为红色或绿色,具体取决于网络是否连接。我想要一个类似于单选按钮的外观,只是颜色必须改变。
最好只使用图片吗?或者我应该创建一个新的视图对象/组件?如果是这样,我该怎么做?
【问题讨论】:
标签: android
早安,
我想创建一个可以添加到我的 Android 应用程序视图的新对象,
我只是想让一个圆圈显示为红色或绿色,具体取决于网络是否连接。我想要一个类似于单选按钮的外观,只是颜色必须改变。
最好只使用图片吗?或者我应该创建一个新的视图对象/组件?如果是这样,我该怎么做?
【问题讨论】:
标签: android
一个简单的选项: 您可以使用 PNG 图像。您需要一张要使用的两种颜色的图像。如果你喜欢,你可以用你的 PNG 创建一个 9Patch。 9Patch 为您提供可以拉伸以适合的图像。
然后在 XML 文件中使用 StateList drawable。 Statelist drawable 使您能够根据状态更改图像
这是您的可绘制文件夹中的 button_statelist.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/redbutton" />
<item android:drawable="@drawable/bluebutton" />
</selector>
你可以使用其他状态来代替 state_pressed
在您的布局文件夹中,您将按钮定义为:
<Button
android:id="@+id/button1"
android:background="@drawable/button_statelist"
/>
【讨论】:
您可以将样式应用于您的按钮/图像按钮/图像视图,您可以在其中定义背景的外观和边框半径以获取圆形。将其另存为 your_style.xml 在 drawable 文件夹中。代码如下所示:
<shape>
<solid
android:color="#f00" />
<stroke
android:width="1dp"
android:color="#d00" />
<corners
android:radius="40dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
您使用android:background="@drawable/your_style" 设置形状和背景颜色。如果你想要一个额外的图像(为了获得那个单选按钮的外观),你只需添加android:drawableLeft="@drawable/your_overlay_image。
【讨论】: