2012-05-17 262 views
17

我寫了自定義視圖,它繪製了一個圓圈。然後我把它放在相對佈局上。我還把標準按鈕放在那裏,以便它們重疊。我看到那個按鈕是透明的。如何使它不透明?如何讓按鈕不透明?

enter image description here

回答

6

標準霍洛主題按鈕是部分透明的。你可以創建一個新的按鈕9.png圖像在按鈕中使用或通過使用drawable創建一個新按鈕。

下面是關於如何做後者的鏈接:

http://droidapp.co.uk/?p=309

+1

什麼是最簡單的方法是什麼?難道我不能將按鈕設置爲不透明嗎? –

+0

第二個選項非常簡單。您可以將按鈕背景更改爲純色(即#999999),但不會看起來不錯,並且不會讓按鈕處於按下狀態,從而導致用戶體驗不佳。 – Tony

3

你可以把按鈕,在單獨的框架佈局,使您的視圖不會影響按鈕,這就是我的想法

1

保存下面的代碼作爲繪製文件夾中的XML,並給這個XML作爲按鈕的背景

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="0dp" android:color="#ffffff" /> 
    <solid android:color="#000000"/> 
    <corners android:radius="1px"/> 
    <padding android:left="5dp" android:top="3dp" android:right="5dp" android:bottom="3dp" /> 
</shape> 

例:

android:background="@drawable/<< your file name>>" 
31

將背景設置爲@android:drawable/btn_default以獲得r全息主題透明度的編號

+3

這也將圖形更改爲設備默認值(即不是全息)。 – Timmmm

+2

完美答案。謝謝。 –

+0

這是一個完美的答案!你知道如何將它應用到另一個控件嗎? (尤其是EditText) – Bronek

0

全息透明度實際上內置於PNG文件中。所以改變它的唯一真正方法是編輯PNG並使它們不透明。這實際上並不容易。您需要將圖像的Alpha通道乘以255/102。這不容易!

但是因爲我是這樣一個天才,我找到了一個辦法。基本上我將所有相關的PNG和XML複製到他們自己的目錄結構中(按鈕只有-mdpi,-hdpi-xhdpi版本)。然後我跑這個:

FILE在find . -name *.png;做mogrify -evaluate Multiply 2.5-channel Alpha $ FILE;完成

工作完成!事實上,由於某些原因,它對殘疾人按鈕並不適用 - 我認爲,因爲該中心是超透明的,但我不太在意這些。如果您希望它們完全不透明,則必須對這些圖像使用比2.5更高的值。

去年的結果是here

+0

這很棒,但是當你說「然後我跑這個...」,在哪裏你是從哪個代碼運行的? – Floris

1

我與同樣的問題,但與ToggleButton。一個醜陋而快速的解決方案是將ImageView放置在按鈕的後面,並將其改爲margin s,backgroundalpha以適應按鈕。例如,RelativeLayout的內部:

<ImageView 
    android:layout_alignLeft="@+id/toggleButton" 
    android:layout_alignBottom="@+id/toggleButton" 
    android:layout_alignRight="@+id/toggleButton" 
    android:layout_alignTop="@+id/toggleButton" 
    style="@style/HackBackgroundToggleButton" /> 

<ToggleButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/toggleButton" 
    ... /> 

而且,爲了減少可見破解,提取的風格:

<style name="HackBackgroundToggleButton"> 
    <item name="android:layout_width">84dp</item> 
    <item name="android:layout_height">42dp</item> 
    <item name="android:background">#FFFFFF</item> 
    <item name="android:layout_marginTop">4dp</item> 
    <item name="android:layout_marginLeft">4dp</item> 
    <item name="android:layout_marginRight">4dp</item> 
    <item name="android:layout_marginBottom">4dp</item> 
    <item name="android:alpha">0.75</item> 
</style>