2014-12-02 77 views
0

我在顯示活動之前更改了一些按鈕背景顏色,並且當顯示按鈕時,它們缺失了它們周圍的空白區域。更改按鈕背景顏色可移除空白區域

enter image description here

如何獲得的按鈕是紅色的,其中灰色,並保持白色空間?

+0

檢查我編輯的答案。 – Carnal 2014-12-03 10:11:32

回答

0

創建drawable一個red_button.xml這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
<stroke android:width="2dp" 
     android:color="#80FFFFFF" /> 

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

    <gradient android:angle="270" 
      android:centerColor="#ff0000" 
      android:endColor="#ff0000" 
      android:startColor="#ff0000" /> 
</shape> 

要獲得相同的形狀作爲默認Button

可以玩弄radiusstroke widthstroke color讓你Button你想要的。

編輯:您可以將顏色添加到原來的默認Button這樣的:

Drawable d = yourButton.getBackground(); 
PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP); // or whatever color you like 
d.setColorFilter(filter); 
+0

我可以通過代碼執行此操作嗎,而不是將它放入XML中? – 2014-12-02 15:39:54

+0

爲什麼你想在代碼中做到這一點?創建XML,只需在button.setBackgroundResource(R.drawable.red_button)中添加背景代碼; – Carnal 2014-12-02 15:41:51

+0

我想通過代碼來做到這一點,因爲我通過代碼設置背景顏色。如果我製作了一個通用的按鈕佈局,並將其設置爲setBackgroundResource(),我可以使用代碼更改其背景顏色嗎?所以我不需要爲每種顏色需要一個佈局? – 2014-12-02 16:38:52

0

你可能已經錯過了佈局設置保證金。實際上,按鈕周圍有一個空白區域,所有按鈕都會被觸摸,所以當您設置背景時,空白區域也會變成紅色。我猜這應該沒問題。

佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/one" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="About" 
     android:layout_margin="5dp" /> 

    <Button 
     android:id="@+id/two" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Gallery" 
     android:layout_margin="5dp"/> 

    <Button 
     android:id="@+id/third" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Media" 
     android:layout_margin="5dp"/> 

</LinearLayout> 

在strings.xml中

<color name="red">#FF0000</color> 

在Java

one = (Button) findViewById(R.id.one); 
     two = (Button) findViewById(R.id.two); 
     three = (Button) findViewById(R.id.third); 
     one.setBackgroundResource(R.color.red); 
     two.setBackgroundResource(R.color.red); 
     three.setBackgroundResource(R.color.red); 

輸出

This is your desired output?