2011-01-20 2 views
3

Я создаю несколько кнопок и добавить их в линейной компоновки, которая определяется какMargin кнопок в линейной компоновке

<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:id="@+id/mylayout"> 

    </LinearLayout> 

созданы Кнопки с

for (int i = 0; i < 3; i++) 

    { 
     Button btn = new Button(activity); 
     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.WRAP_CONTENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT); 
     lp.setMargins(1, 1, 1, 1); 

     btn.setText("Button"); 
     btn.setPadding(0, 0, 0, 0); 

     mylayout.addView(pv, lp); 

    } 

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

Должен ли я установить

lp.setMargins (-3, -3, -3, -3);

который удаляет границу? Есть ли недостаток в этом?

+0

Я столкнулся с той же проблемой: http://www.codeviking.net/sandbox/android/extra-button-margin/ – Skone

ответ

11

Я действительно не думаю, что у них есть запас, но это связано с фоном кнопки. Вероятно, фон по умолчанию кнопки имеет изображение, как этот:

http://developer.android.com/guide/developing/tools/draw9patch.html

, который включает в себя художественную маржу. Здесь вы найдете дополнительную информацию о 9-патче.

http://developer.android.com/guide/topics/resources/drawable-resource.html

На мой взгляд, если вы хотите, чтобы удалить «поля», вы должны создать другой фон для изображения, поскольку -3 значение не является хорошим решением (ИХМО).

+1

вы правы. Это не запас, а фон! – Philipp

+0

Дизайнеру нужна тень, и, как следствие, кнопки были неправильно расположены. Doh! – user999717

0

Почему вы используете Layout Params .. просто добавить вид после его создания ... Это, несомненно, снимает проблему

для (INT I = 0; я < 3; я ++)

{ 
    Button btn = new Button(activity); 


    btn.setText("Button"); 


    mylayout.addView(pv); 

} 
+0

спасибо за ответ, но, к сожалению, это не работает. – Philipp

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