Динамически изменять ширину кнопки в Android - PullRequest
6 голосов
/ 17 апреля 2011

У меня очень простой вопрос, я пытаюсь динамически изменить ширину этой кнопки:

<Button> 
    android:layout_height="35dip" 
    android:background="@drawable/buttonlesson" 
    android:text="Level 3 [TAP HERE]" 
    android:onClick="MenuLI1L3" 
    android:layout_width="300dp" 
    android:id="@+id/II3"
</Button>

Вот код, который я использую:

 Button myButton = (Button) findViewById(R.id.II3);
 myButton.setWidth(10);
 myButton.setText("kl");

Текст действительно изменяетсяно не ширина.Похоже, что есть ошибка.Справа есть еще одна кнопка, которая предполагает заполнить пробел, когда эта кнопка уменьшена до 10 пикселей, поэтому я не могу изменить и выше LinearLayout.

Любое объяснение и решение?Должно работать нет?Спасибо

Ответы [ 2 ]

2 голосов
/ 17 апреля 2011

Я полагаю, что wrap_content не работает для вас в вашем конкретном случае, верно? Если вам нужна абсолютная ширина, вам нужно назначить ее с помощью новых параметров LayoutParameters, т.е.

myButton.setLayoutParams(new LinearLayout.LayoutParams(
    30 * someDensityFactor, LinearLayout.LayoutParams.WRAP_CONTENT
))

где someDensityFactor - это плотность вашего экрана (float). Вам также может понадобиться сделать ваш макет недействительным, чтобы перекрасить кнопку.

0 голосов
/ 17 апреля 2011

В качестве предложения попробуйте вызвать invalidate () в родительском представлении (что вызовет вызовы рисования для всех дочерних элементов - включая вашу кнопку).Это может не сработать, потому что вам также нужно, чтобы кнопка повторно запустила свою логику onMeasure () (которая запускается до рисования).

Воспроизведение с аннулированием или любым другим методом, который заставит родителяпризовите детей к жизни.

...