2015-12-22 63 views
1

我使用的形狀,以便使我的按鈕顯得圓潤有背景(從佈局文件夾):更改背景作爲視圖的背景

主要佈局:

<Button 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/registerButton" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:background="@layout/circle_button"/> 

circle_button .XML:

<shape 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="oval" 
android:layout_width="wrap_content" 
android:layout_height ="wrap_content" 
android:id = "@+id/circle_background"> 
<solid android:background = "@drawable/start_record_icon"></solid> 
</shape> 

問題是,我想形狀的背景改變爲根據所述活動一些變量的給定圖標(也被拉伸)。如果我在XML中定義背景,我該如何動態更改它? (我可以創建3種不同背景形狀的佈局,但看起來很愚蠢)

在此先感謝!

編輯:所以我現在得到的是這樣的東西(如果我將形狀中的實體顏色更改爲白色,否則圖標根本不顯示,我什麼都看不到。右下角):

enter image description here

所以我有幾個問題,實際上是:一個是,我不能設置按鈕的大小(如果我嘗試在<Button>設置,就變成方形;如果我嘗試在形狀或堅實它什麼都不做),第二是我不能應用圖標或改變它們。

回答

0

您可以使用ImageView通過調用setBackgroundResource(int resource)與您的業務邏輯來完成此操作。

ImageView imageView = (ImageView) findViewById(R.id.registerButton); 

if (isCircle()) { 
    imageView.setBackgroundResource(R.drawable.circle_button); 
} 
else { 
    // TODO use different XML drawable 
} 

在你的佈局XML,則應指定相等的寬度和高度,並使用src attribute來設置你的圖標。

<ImageView 
    android:layout_width="72dp" 
    android:layout_height="72dp" 
    android:src="@drawable/my_icon" /> 
+0

是的,我知道的方法,但它不會讓我改變,我想用繪製的 - 假如我想去從一個圖標到另一個,不只是改變顏色... – FitzChivalry

+0

你能編輯你的問題來澄清你的圖標是什麼意思嗎? – fractalwrench

+0

補充說,感謝您的幫助。我想添加的是圖標 - 就像ic_launcher一樣,它將充當circle_button背景的背景,然後circle_button將充當按鈕的背景。我還設法通過創建圖像資源爲圓形(而不是無或正方形)來獲得按鈕圓圈 – FitzChivalry