94

Android 设计指南说要使用无边框按钮(见下图),但并没有真正解释如何使用。几周前有人在这里问过同样的问题:如何创建标准的无边框按钮(如在设计指南中提到的)?并且有一个标记为“该”答案的答案,但我仍然迷路,我看不到向已“关闭”的问题添加评论的方法

回答者说

"查看主题属性buttonBarStyle, buttonBarButtonStyle, 和borderlessButtonStyle"

但我仍然无法弄清楚如何实际使用这些东西。我用谷歌搜索了一下,找不到任何东西,所以我想我会再问一次这个问题,希望有人能提供更多关于它是如何工作的细节。

在此处输入图像描述

4

8 回答 8

152

几周前,当我在这里查看并注意到有关使用透明背景的答案时,我以为我已经解决了这个问题,但这还不够好,因为它可以防止按钮在按下时突出显示。

此外,将样式设置Widget.Holo.Button.Borderless为不合适,因为它会使按钮边界变大。

为了一劳永逸地解决这个问题,我检查了标准日历应用程序的 android 源代码,发现它使用以下内容:

android:background="?android:attr/selectableItemBackground"

这样做可以确保按钮无边框大小正确。

于 2012-03-30T23:00:45.337 回答
91

看看这个:http: //developer.android.com/guide/topics/ui/controls/button.html#Borderless

Button您的orImageButton标签上的属性:

    style="?android:attr/borderlessButtonStyle"
于 2012-07-10T17:08:10.957 回答
23

如果您使用 ActionbarSherlock...

<Button 
  android:id="@+id/my_button" 
  style="@style/Widget.Sherlock.ActionButton" />
于 2012-12-07T13:34:10.003 回答
19

前几天又被这个绊倒了。

这是我的解决方案:

这分两步完成: 将按钮背景属性设置为android:attr/selectableItemBackground会为您创建一个带有反馈但没有背景的按钮。

android:background="?android:attr/selectableItemBackground"

将无边框按钮与其余布局分开的线由背景为android:attr/dividerVertical的视图完成

android:background="?android:attr/dividerVertical"

为了更好地理解,这里是屏幕底部的确定/取消无边框按钮组合的布局(如上图右图)。

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true">
        <View
            android:layout_width="match_parent"
            android:layout_height="1dip"
            android:layout_marginLeft="4dip"
            android:layout_marginRight="4dip"
            android:background="?android:attr/dividerVertical"
            android:layout_alignParentTop="true"/>
        <View
            android:id="@+id/ViewColorPickerHelper"
            android:layout_width="1dip"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="4dip"
            android:layout_marginTop="4dip"
            android:background="?android:attr/dividerVertical" 
            android:layout_centerHorizontal="true"/>
        <Button
            android:id="@+id/BtnColorPickerCancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@id/ViewColorPickerHelper"
            android:background="?android:attr/selectableItemBackground"
            android:text="@android:string/cancel" 
            android:layout_alignParentBottom="true"/>
        <Button
            android:id="@+id/BtnColorPickerOk"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:background="?android:attr/selectableItemBackground"
            android:text="@android:string/ok" 
            android:layout_alignParentBottom="true" 
            android:layout_toRightOf="@id/ViewColorPickerHelper"/>
    </RelativeLayout>
于 2012-07-14T05:27:05.290 回答
15

这段代码对我有用:

<View
    android:layout_width="match_parent"
    android:layout_height="1dip"
    android:background="?android:attr/dividerVertical" />

<LinearLayout
    style="?android:attr/buttonBarStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:measureWithLargestChild="true"
    android:orientation="horizontal"
    android:paddingLeft="2dip"
    android:paddingRight="2dip"
    android:paddingTop="0dip" >

    <Button
        android:id="@+id/cancel"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="onClickCancel"
        android:text="@string/cancel" />

     <Button
        android:id="@+id/info"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="onClickInfo"
        android:visibility="gone"
        android:text="@string/info" />

    <Button
        android:id="@+id/ok"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="onClickSave"
        android:text="@string/save" />
</LinearLayout>

我在底部显示 3 个按钮

于 2013-04-27T18:04:18.743 回答
10
android:background="@android:color/transparent"
于 2012-02-06T21:58:35.490 回答
9
<Button android:id="@+id/my_button" style="@android:style/Widget.Holo.Button.Borderless" />
于 2012-02-08T07:38:51.210 回答
0

您还应该将图片的边距和填充设置为 0。还请查看如何创建标准无边框按钮中的第二个未标记答案(如提到的设计指南中)?

于 2012-02-06T22:01:44.490 回答