我希望我的按钮是透明的,因为我在活动上有一个图像作为背景。 如果按钮不透明,那些按钮覆盖图像,图像背景似乎无用。
如果我使用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" />
答案 0 :(得分:24)
如果您只想要白色边框,并且按钮中的文本/图标,但按钮背景透明,则创建以下drawable(我将其命名为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 drawable中你可以添加圆角等等......
答案 1 :(得分:4)
android:background="#A0FFFFFF"
我已对颜色进行了硬编码,但您应将其存储在colors.xml
中修改前两个字符A0,调整所需的透明度,最后6个字符为您想要的颜色。
答案 2 :(得分: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>
为您修改此项=)
答案 3 :(得分: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"
/>
答案 4 :(得分: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/>
使所有按钮透明。