Это раздувает представление без полей

#android #margin #inflate #android-inflate #layout-inflater

#Android #поле #раздувать #android-раздувать #макет-надуватель

Вопрос:

У меня есть этот код

 View item = View.inflate(context, R.layout.item_layout, null);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
                        LayoutParams.WRAP_CONTENT);
    layout.addView(item, params);
  

мой item_layout: (обратите внимание на часть android:layout_marginTop=»2dip»)

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" android:layout_marginTop="2dip" android:layout_width="fill_parent">

    <ImageView android:src="@drawable/pic_unknown" android:id="@ id/image1"
        android:layout_height="50dip" android:layout_width="50dip"
        android:padding="5dip"></ImageView>
</RelativeLayout>
  

а затем в моем макете я вижу список элементов, увеличенных, но без разницы между ними. Я пробовал с помощью margintop = 10dip, но ничего не происходит, я хочу сказать, что значение, которое я ввел в макет, не учитывается при вычислении с верхним краем или без него, макет тот же.

Как я могу добавить немного пустого пространства между элементами? Как я могу раздуть пустое пространство между элементами? Возможно ли раздуть что-то вроде gap или некоторого пробела? или я должен использовать обходной путь, например, раздуть какой-нибудь пустой макет высотой 2dip или что-то в этом роде, спасибо

Ответ №1:

Последний параметр метода inflate — это параметр, к которому вы добавляете раздутое представление. В вашем случае это так null . Попробуйте это вместо:

  View item = View.inflate(context, R.layout.item_layout, layout);
  

Комментарии:

1. Хорошее предложение. это attachToRoot.

2. Проблема, с которой я сталкиваюсь, заключается в том, что я раздуваю a View , чтобы прикрепить его к a ListView в качестве заголовка; если я использую ListView in the inflater, он выдает исключение. Как бы я получил поля в этом случае?

3. какой макет?

4. @SalehMosleh Родительский вид. Представление, к которому вы хотите, чтобы ваш we был добавлен.

Ответ №2:

Попробуйте вместо этого заполнить RelativeLayout, если ваши поля применяются к внешней стороне.

Ответ №3:

Вы можете добавить поле к макету, который вы раздули, как показано ниже:

 final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                                                                                ViewGroup.LayoutParams.WRAP_CONTENT);
         params.topMargin = 10;