2013-04-07 66 views
1

我有一個九貼圖像,它在activity.onCreate()期間爲我的textview設置了背景。 Textview具有高度+寬度的WRAP_CONTENT佈局。它是從代碼創建的,而不是從XML創建的。Android:調用textview.setBackgroundResource兩次可更改文本視圖大小

_btnCurrent.setBackgroundResource(R.drawable.button_menu_off); 

這工作正常。 我有其他九修補的圖像,相同的大小,唯一的區別是它的顏色。 現在,如果稍後使用其他圖像調用setBackgroundResource,它將增加textview的高度,幾乎翻倍。這其他呼叫從textview.onClick()

_btnCurrent.setBackgroundResource(R.drawable.button_menu_on); 

如果我再次調用它(在TextView中再次單擊),沒有效果發生。這很好,我想這也是第一次點擊發生的情況。 所以:

Activity.onCreate() 
{ 
    btnCurrent= new TextView(this); 
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

    btnCurrent.setBackgroundResource(R.drawable.button_menu_hs_off); 

    btnCurrent.setPadding(15, 5, 15, 5); 
    btnCurrent.setGravity(Gravity.CENTER); 

    btnCurrent.setText(GetString(id));   
    btnCurrent.setOnClickListener(this); 

} 

onClick() 
{ 
    _btnCurrent.setBackgroundResource(R.drawable.button_menu_on); 
} 


onCreate(); // -> called by Android during startup -> OK 
.... 
onClick(); // called when user clicks on it -> btnCurrent has double height 
.... 
onClick(); // called when user clicks again -> btnCurrent has same double height, no change in size 
.... 
onClick(); // called when user clicks again -> btnCurrent has same double height, no change in size 

我試圖設置_btnHSCurrent.setBackgroundResource(0);在設置新圖像之前,但沒有幫助。

爲什麼會發生這種情況?

@Edit

我所做的: _btnCurrent.setBackgroundResource(R.drawable.button_menu_off);在Activity.onCreate()期間。

然後在textview.onClick(),I撥打:

_btnCurrent.setBackgroundResource(R.drawable.button_menu_on);

這會使身高增加一倍。再次單擊再次,不會再改變尺寸,僅在第一次點擊。

enter image description here enter image description here

+0

你介意把這裏放到兩張9貼圖片上嗎? – 2013-04-07 11:16:11

+0

似乎你的問題與第二張圖片(button_menu_on) – 2013-04-07 11:24:08

+0

你可以顯示你的textview的XML部分? – 2013-04-07 11:28:28

回答

2

這看起來像一個類似的問題,我曾與填充。在調用setBackgroundResource之後,填充似乎會改變,而不是使用我在styles.xml中配置的值。效果看起來像大小已經改變一樣,但實際上它是填充。

我的解決方法是調用按鈕setPadding改變背景之後,例如:

button.setBackgroundResource(R.drawable.btn_add); 
button.setPadding(10, 15, 10, 15); 

這不是很大,但它的工作原理。

我希望這有助於!

+0

我只是發現了同樣的解決方案,看到我在問題的最後評論。是的,這是問題,'setBackgroundResource' 遺址填充。將此標記爲解決方案 – Zotyi 2013-04-07 12:05:15

+0

但是,您正在使用九個修補程序,因此應該將填充指定爲圖像的一部分。你應該只指定填充XML或通過setPadding()當*不*使用ninepatch ... – 2013-04-07 12:39:22

+0

@ReubenScratton:這也是需要考慮的事情......但是懶惰它比'setPadding()'更簡單地玩,而不是編輯圖片 – Zotyi 2013-04-07 12:46:23

相關問題