如何在android中设置按钮样式

Posted

技术标签:

【中文标题】如何在android中设置按钮样式【英文标题】:How to set button style in android 【发布时间】:2011-05-28 04:57:40 【问题描述】:

普通按钮的样子:

现在,请告诉我,我怎样才能制作一个与附加图像按钮相同的简单按钮(即按钮角形状是圆形的,并且两个按钮之间没有间隙)

【问题讨论】:

这里有一些漂亮的渐变按钮示例,包括预览:dibbus.com/2011/02/gradient-buttons-for-android 【参考方案1】:

您需要创建一个9-patch 可绘制对象。为了在按钮之间没有间隙(边距),您需要在 XML 中创建适当的布局并将边距设置为 0。

【讨论】:

+1,感谢您的支持,它也帮助我明白了这一点。【参考方案2】:

9-patch 在这里可以正常工作,但我尽量避免使用它们,因为我很难做到:(

您可以尝试使用selector 并为每个状态使用形状:

形状如下所示:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle">

    <solid android:color="#AAFFFFFF"/>

    <corners android:bottomRightRadius="7dp"
        android:bottomLeftRadius="7dp" 
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp"/>
</shape>

【讨论】:

是的 Macarse,您使用 9 补丁图像绝对正确,请在下面查看我的答案:***.com/questions/4489069/android-button-style/… 对于半径,如果所有角都相同,您可以使用这个小技巧:android:radius="Xdp"。只需添加其他代码即可。【参考方案3】:

您也可以在 xml 文件中使用 ImageView ,然后将 onClickable 和 onFocusable 设置为 true ,然后在后端代码上创建 onClick 事件方法并在 xml 上给出该方法的名称,这样您就不必处理所有形状或按钮问题只需将 imageview 放在那里,让它像一个按钮一样。这是给你的示例代码

<ImageView
            android:id="@+id/test"
            android:layout_
            android:layout_
            android:clickable="true"
            android:focusable="true"
            android:onClick="testClickEvent"
            android:paddingRight="8dip"
            android:paddingBottom="8dip"
            android:src="@drawable/testImg"/>

正如我在后端使用这样的符号创建方法所说的,这将完成这项工作

public void testClickEvent(View v)

然后在这个方法中实现你想做的事情

【讨论】:

【参考方案4】:

使用draw9patch(android/tools 的一部分)轻松创建九个补丁可绘制对象,然后应用样式和主题...this link (Androgames.net) 上的教程应该可以帮助您入门。

【讨论】:

【参考方案5】:

查找foursquared 源代码并查找SegmentedButton.java 文件,这是实现图像中显示的这些按钮的文件。

【讨论】:

+1 Thiago Thanx 指出这一点。我已经解决并实现了比这更好的事件:) 我仍然会检查它是否好。 :)【参考方案6】:

1- 为按下和释放状态创建形状(具有所需颜色)

要创建形状,我建议这个很棒的网站会为您完成:http://angrytools.com/android/button/

drawable\botton_shape_pressed.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="@color/pressed_button_background"
        android:endColor="@color/pressed_button_background"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

drawable\botton_shape_released.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="@color/released_button_background"
        android:endColor="@color/released_button_background"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

2- 为两个形状创建一个选择器

可绘制\botton_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/botton_shape_pressed"
          android:state_pressed="true" />
    <item android:drawable="@drawable/botton_shape_pressed"
          android:state_selected="true" />
    <item android:drawable="@drawable/botton_shape_released" />
</selector>

3- 使用按钮的选择器

<Button
    android:id="@+id/button1"
    android:layout_
    android:layout_
    android:text="@string/test"
    android:textColor="@color/blue_text"
    android:onClick="testOnClickListener"
    android:background="@drawable/botton_selector" />

【讨论】:

【参考方案7】:

要设置文本样式,您可以将其添加到 strings.xml

    <style name="ButtonText">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:gravity">center</item>
    <item name="android:layout_margin">3dp</item>
    <item name="android:textSize">30dp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:shadowColor">#000000</item>
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">2</item>
    </style>

并在 main.xml 按钮中调用它

 style="@style/ButtonText"

您可以使用的另一种方法是在@drawable/btn_black 中创建以下内容...

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#343434" />
            <stroke
                android:
                android:color="#171717" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:startColor="#343434"
                android:endColor="#171717"
                android:angle="270" />
            <stroke
                android:
                android:color="#171717" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>

【讨论】:

【参考方案8】:

button_primary.xml

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">

        <gradient
            android:angle="270"
            android:endColor="@color/background"
            android:startColor="@color/background" />

        <corners android:radius="1dp" />

        <stroke
            android:
            android:color="@color/colorPrimary3" />

    </shape>

调用 style="@style/button_primary"

【讨论】:

以上是关于如何在android中设置按钮样式的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中设置按钮点击效果?

如何在引导表中设置单选按钮或复选框的样式?

如何在 React Native Android 中设置按钮的高度

如何使用Material Design在Alert Dialog Fragment中设置按钮样式?

在 UISearchBar 中设置取消按钮的样式

在React native中设置按钮样式