“如何将参数传递到可绘制对象中”或“创建具有渐变和可变图像的按钮”

发布于 2024-12-04 11:21:48 字数 1485 浏览 1 评论 0原文

我的 android 项目中有一个自定义的可绘制对象,它应该是按钮的背景。但每个按钮还应该支持一个图标和一个文本。

到目前为止我尝试过的如下:

我有一个名为“btn_background.xml”的可绘制对象

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
   <layer-list >
       <item>
           <shape xmlns:android="http://schemas.android.com/apk/res/android"
                android:shape="rectangle">
                <gradient android:startColor="#ff0000" 
                    android:endColor="#ee1111" 
                    android:type="linear"
                    android:angle="90"/>
                <stroke android:color="#ff0000" 
                   android:width="1dip"/>
                <size android:width="80dip"
                      android:height="40dip" />
           </shape>
       </item>
       <item android:drawable="@drawable/btn_search"/>
   </layer-list>
</item>

在我的布局文件中,我像这样使用它:

<Button android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:text="Button" 
        android:background="@drawable/btn_background"
        android:textColor="#ffffff"/>

这让我接近某个地方......但是有两个问题: * 图像拉伸到整个按钮 * 我不能只更改布局文件中的图像...所以我必须为每个图标制作一个单独的 btn_whatever.xml 文件?!?

我尝试的另一个解决方案是使用 ImageButton 而不是 Button 并将背景设置为我的 btn_background.xml ....这将使我能够在布局文件中选择图像...但我不能给它一条短信......

我很高兴听到您对我的问题的解决方案:)

非常感谢!

I have a custom drawable in my android project that should be the background of a button. But each button should also support an icon AND a text.

What I tried so far is the following:

I have a drawable called "btn_background.xml"

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
   <layer-list >
       <item>
           <shape xmlns:android="http://schemas.android.com/apk/res/android"
                android:shape="rectangle">
                <gradient android:startColor="#ff0000" 
                    android:endColor="#ee1111" 
                    android:type="linear"
                    android:angle="90"/>
                <stroke android:color="#ff0000" 
                   android:width="1dip"/>
                <size android:width="80dip"
                      android:height="40dip" />
           </shape>
       </item>
       <item android:drawable="@drawable/btn_search"/>
   </layer-list>
</item>

And in my layout file i use that like this:

<Button android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:text="Button" 
        android:background="@drawable/btn_background"
        android:textColor="#ffffff"/>

This is getting me somewhere close... but there are two problems:
* The image is stretched across the whole button
* I can't just change the image in the layout file... so i would have to make a seperate btn_whatever.xml file for each icon?!?

The other solution that I tried was to use an ImageButton instead of an Button and set the background to my btn_background.xml .... this would make me able to select the image in the layout file... but then i can't give it a text....

I would be happy to hear about your solutions for my problem :)

Thanks a lot!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寂寞笑我太脆弱 2024-12-11 11:21:48

Try to use android:drawableLeft (or similar Top, Right, Bottom) attribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文