2012-10-12 7 views
5

Tôi muốn các nút của mình trong suốt vì tôi có hình ảnh trên hoạt động làm nền. Nếu các nút không trong suốt, các nút đó che phủ hình ảnh và nền ảnh có vẻ vô dụng.Cách làm cho nút trong suốt trong ứng dụng của tôi chưa hiển thị

Nếu tôi sử dụng android:background="@android:color/transparent", nút này làm cho nút của tôi hoàn toàn ẩn trừ văn bản trên đó. Vì vậy, tôi cần các nút được minh bạch cung cấp nó sẽ được nhìn thấy rằng có một nút. Đoạn mã sẽ được đánh giá cao.

<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

Tôi không hiểu. Bạn có nghĩa là bạn không thấy hình ảnh bạn đặt trong hoạt động thông qua nút? Bạn có nghĩa là "một phần minh bạch"? – Simon

+0

@Simon Có, tôi muốn nút được trong suốt một phần. Vì vậy, nó sẽ được nhìn thấy rằng có một nút. – hrithik

Trả lời

2

Apply chọn cho nút, như thế này

<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> 

Sửa đổi điều này cho bạn =)

1

Áp dụng đường viền cho nút

<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
android:background="#A0FFFFFF" 

tôi đã cứng mã hóa màu sắc, nhưng bạn nên lưu nó trong colors.xml

Sửa đổi hai ký tự đầu tiên, A0, để điều chỉnh bao nhiêu minh bạch bạn muốn và 6 ký tự cuối cùng màu bạn muốn.

24

Nếu bạn chỉ muốn đường viền trắng và các văn bản/biểu tượng trong nút, nhưng nền nút trong suốt tạo ra sau đây có thể vẽ được (tôi đặt tên nó 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> 

Và sử dụng nó như là một nền cho nút:

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

Tôi đoán có một cách thanh lịch hơn để làm điều đó với chủ đề, nhưng tôi chưa đến đó. Trong button_border drawable bạn có thể thêm góc tròn và không có điều gì ...

0

Chỉ cần cố gắng sử dụng bên dưới mã trong 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/> 

mà làm cho tất cả các nút trong suốt.