2012-02-09 2 views
0

У меня есть этот код:Android SDK ImageButton тянется, когда Gravity.Right

ImageButton call = new ImageButton(context); 
call.setId(9001+result.index); 
call.setBackgroundResource(R.drawable.small_call); 
LinearLayout.LayoutParams call_params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT 
); 
call.setLayoutParams(call_params); 

Это делает кнопку так, как я хочу, но когда я делаю это:

ImageButton call = new ImageButton(context); 
call.setId(9001+result.index); 
call.setBackgroundResource(R.drawable.small_call); 
LinearLayout.LayoutParams call_params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT, 
    Gravity.CENTER_VERTICAL | Gravity.RIGHT 
); 
call.setLayoutParams(call_params); 

Это растягивает изображение , испортить соотношение сторон и делает его размытым/пиксельным.

Итак, каков правильный способ визуализации изображения, как в первом фрагменте кода, но поместите кнопку, где его поместит второй фрагмент кода?

Заранее спасибо.

+1

try call.setScaleType (ScaleType.FIT_XY); –

ответ

2

Использовать RelativeLayout или FrameLayout вместо LinearLayout.

См. Также layout_gravity in LinearLayout.

Это учебник: A Visual Guide to Relative Layouts In Android.

+0

Без комментариев или ответов до сих пор позволяют мне делать то, что я хочу сделать: Выровняйте каждую кнопку вызова вправо, центрируйте каждую кнопку вертикально в ней TableRow, не позволяя кнопке масштабироваться или растягиваться. Я посмотрел на приведенный выше пример, и после этого мои кнопки не были выровнены вправо или вертикально по центру. –

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