Android программно устанавливает маржу ImageButton в TableRow - PullRequest
3 голосов
/ 31 марта 2011

Я определил TableLayout в своем коде Java. Для каждой строки я отображаю три кнопки ImageButton. При нажатии одной из этих кнопок цвет фона меняется. Чтобы отобразить это красиво, я установил отступ в 10 пикселей.

Проблема, с которой я столкнулся сейчас, заключается в том, что если вы нажмете две кнопки, расположенные рядом, вы точно не увидите разрыв между кнопками. Поэтому мне интересно, есть ли возможность установить поле для кнопок ImageButtons или другое решение?

Ответы [ 2 ]

11 голосов
/ 31 марта 2011

Попробуйте

int leftMargin = 10;
((MarginLayoutParams) imageButton.getLayoutParams()).leftMargin = leftMargin;

EDIT: Если вы не используете ImageButton, определенный в xml, вы должны установить LayoutParams следующим образом:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
params.leftMargin = 10;
b.setLayoutParams(params);

Здесь я предполагаю, что вы используете LinearLayout в своем элементе списка.

2 голосов
/ 18 июня 2011

Обязательно используйте LayoutParams для контейнера, в котором находится элемент управления. В вашем случае кнопки находятся в TableRow, поэтому используйте TableRow.LayoutParams, если вы используете любой другой тип параметров, элемент управления не будет показать вообще.

...