5

我希望我的按钮是透明的,因为我在活动上有一个图像作为背景。如果按钮不透明,则这些按钮会覆盖图像并且图像背景似乎无用。

如果我使用android:background="@android:color/transparent",它会使我的按钮完全不可见,除了上面的文字。所以,我需要按钮是透明的,只要它应该是可见的有一个按钮。代码片段将不胜感激。

<Button
android:id="@+id/new_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"  //this line makes the button completely invisible.
android:text="@string/label" />
4

5 回答 5

25

如果您只想要白色边框和按钮中的文本/图标,但按钮背景透明,请创建以下可绘制对象(我将其命名为 button_border.xml):

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <stroke
                android:color="@android:color/white"
                android:width="1dp" />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</selector>

并将其用作按钮的背景:

<Button
    .
    .
    .
    android:background="@drawable/button_border"
    />

我猜想有一种更优雅的方式来处理主题,但我还没有那么远。在 button_border 可绘制对象中,您可以添加圆角等等...

于 2012-10-16T05:25:57.757 回答
4
android:background="#A0FFFFFF"

我已经对颜色进行了硬编码,但您应该将其存储在 colors.xml 中

修改前两个字符 A0,调整您想要的透明度,最后 6 个字符调整您想要的颜色。

于 2012-10-13T06:05:41.833 回答
2

为按钮应用选择器,像这样

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"><shape>
        <solid
            android:color="@color/color_1_end" />

        <stroke 
            android:width="1dp"
            android:color="@android:color/transparent" /> // transparent patametr

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

        <padding 
            android:bottom="10dp" 
            android:left="10dp" 
            android:right="10dp" 
            android:top="10dp" />
    </shape></item>
<item>
    <shape>
        <gradient android:angle="270"
             android:endColor="@color/color_1_start" 
             android:startColor="@color/color_1_end" /> // maybe transparent 

        <stroke 
            android:width="1dp" 
            android:color="@color/color_1_start" /> //maybe transparent 

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

        <padding android:bottom="10dp" 
            android:left="10dp" 
            android:right="10dp" 
            android:top="10dp" />
    </shape>

    </item>

为你修改这个=)

于 2012-10-12T10:10:24.667 回答
2

为按钮应用边框

<item>
    <shape>
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />

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

        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape>
        <padding
            android:bottom="2dp"
            android:left="2dp"
            android:right="2dp"
            android:top="2dp" />

        <gradient
            android:angle="315"
            android:centerColor="#FFFFFFFF"
            android:endColor="#FFB0B0B0"
            android:startColor="#FFB0B0B0" />
    </shape>
</item>

  <Button
        android:id="@+id/btnLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_margin="7dip"
        android:background="@drawable/button_border"
        android:scaleType="centerInside"
 />
于 2012-10-12T10:15:27.067 回答
0

只需尝试在java中使用以下代码

<br/>
    button.getBackground().setAlpha(int);<br/>
correct range of input parameter is between 1 and 255 and the '1' is more transparent.
common pitfall is using:<br/>
    button.setAlpha(float);<br/>

使所有按钮透明。

于 2015-01-12T22:32:45.270 回答