Проблема с размером изображения при программном добавлении

У меня есть небольшая (и немного сложная) проблема, и я не мог решить ее за много часов самостоятельно. Сценарий проблемы:

Я добавляю TextView (т. е. заголовки) и связанные (с возможностью нажатия) ImageView программно (из базы данных). Отступ между ними уже очень большой (я не добавлял между ними никаких отступов или отступов). Я хочу установить маржу только на 1dp. Но я не могу.

Я использовал следующий код:

LinearLayout linearLayout = (LinearLayout) this.findViewById(R.id.linearLayout);

//No params and margins used for it
TextView tvTitle = new TextView(this); // getting from json (dynamically)
tvTitle.setTextSize(17) ;
tvTitle.setText(title) ;
linearLayout.addView(tvTitle) ;

ImageView image = new ImageView(this) ;
// here getting the image from url

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT) ;
params.setMargins(5, 0, 5, 0) ;
image.setLayoutParams( params );
linearLayout.addView(image) ;

Так как здесь topMargin и bottomMargin равны 0, но когда приложение работает; поля над и под изображениями почти 20 dp.

Когда я увеличиваю маржу с 20 dp, т. Е. Когда я заменяю любой 0 на 30 или 40, маржа увеличивается, но когда я уменьшаю ее до 5, 1 или 0, она не уменьшается. Он остается около 20 dp. Кто имеет представление об этом...


person user2281330    schedule 02.05.2013    source источник
comment
Почему вы не хотите подготовить свой макет в виде xml и использовать его через LayoutInflater в своем коде?   -  person Eugene Popovich    schedule 02.05.2013
comment
Можете ли вы проверить поля tvtitle Textview или установить его явно, что может создать проблему?   -  person Rupali    schedule 02.05.2013
comment
привет, босс, проверьте свойства изображения, такие как высота и ширина   -  person srinivas    schedule 02.05.2013
comment
@RupaliG ... да, я использовал, но не могу найти решение проблемы. На самом деле (я думаю) это связано с какой-то определенной высотой покупки ОС Android. Когда я уменьшаю высоту изображения, пространство над и под ним также уменьшается   -  person user2281330    schedule 02.05.2013
comment
@ user527759 ... Я никогда не пробовал. Добавляет ли этот метод n число просмотров в LinearLayout программно??   -  person user2281330    schedule 02.05.2013
comment
Можете ли вы проверить - установить все поля на ноль для LinearLayout с помощью LayoutParams?   -  person Rupali    schedule 02.05.2013
comment
@sri... Я установил их как WRAP_CONTENT в LayoutParams   -  person user2281330    schedule 02.05.2013
comment
@RupaliG ... Да, я буду, но проблема в том, что margin находится между дочерними элементами LinearLayout, то есть TextView и ImageView изначально выше и ниже представления изображения.   -  person user2281330    schedule 02.05.2013
comment
почему ниже изображения нет другого элемента управления, тогда это может быть верхнее поле linearlayout?   -  person Rupali    schedule 02.05.2013


Ответы (1)


Похоже, границы обзора на ImageView настраиваются неправильно. Попробуйте настроить это на своем ImageView:

image.setAdjustViewBounds(true);

person Sander van't Veer    schedule 02.05.2013