2013-04-07 1 views
1

У меня есть изображение с девятью патчами, на котором я задал фон для своего текстового поля во время activity.onCreate(). Textview имеет макет WRAP_CONTENT как для высоты, так и для ширины. Он создан из кода, а не из XML.Android: вызов textview.setBackgroundResource дважды меняет размер текстового поля

_btnCurrent.setBackgroundResource(R.drawable.button_menu_off); 

Это прекрасно работает. У меня есть еще одно изображение с девятью патчами, такого же размера, только разница - это цвет. Теперь, если я позже вызову setBackgroundResource с другим изображением, он увеличит высоту текста, почти удвоится. Этот другой вызов происходит из 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 

Я попытался установить (0) _btnHSCurrent.setBackgroundResource; перед установкой нового изображения, но не помогает.

Почему это происходит?

@Edit

я сделал: _btnCurrent.setBackgroundResource (R.drawable.button_menu_off); во время Activity.onCreate().

Тогда в textview.onClick(), я называю:

_btnCurrent.setBackgroundResource (R.drawable.button_menu_on);

, и это удвоит высоту. Повторное нажатие снова снова не изменяет размер, только при первом нажатии.

enter image description here enter image description here

+0

не можете разместить здесь два изображения с 9 патчами? –

+0

Кажется, ваша проблема со вторым изображением (button_menu_on) –

+0

Можете ли вы показать часть XML вашего текста? –

ответ

2

Это похоже на аналогичный вопрос, я имел с набивкой. После вызова setBackgroundResource отступы, кажется, меняются, не используя значения, которые я сконфигурировал в styles.xml. Эффект выглядит так же, как если бы размер изменился, но на самом деле это дополнение.

Мой обходной путь, чтобы позвонить setPadding на кнопку после изменения фона, например:

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

Это не большой, но это работает.

Надеюсь, это поможет!

+0

я только что нашел такое же решение, см мой последний комментарий по вопросу. Да, это была проблема, 'setBackgroundResource' разрушает прокладку. Отметить это как решение – Zotyi

+0

Но вы используете девять патчей, поэтому дополнение должно быть указано как часть изображения. Вы должны указывать только прописку в XML или через setPadding(), когда * not * с использованием девятикратного ... –

+0

@ReubenScratton: Это тоже что-то, что нужно учитывать ... однако, ленивый, проще играть с 'setPadding()', чем редактировать изображения – Zotyi

Смежные вопросы