Я программно добавляю пользовательские виды в вертикальный LinearLayout, и я хотел бы, чтобы между видами было некоторое пространство. Я попытался добавить: setPadding (0, 1, 0, 1) в мой конструктор CustomView, но это, похоже, не имеет никакого эффекта. Любой совет?
* Было указано, что я должен использовать поля. Поскольку я динамически добавляю представления, мне нужно установить поля из кода (не в xml). Я считаю, что способ сделать это ниже, но он не работает.
public class MyView extends View
{
public MyView (Context context)
{
super(context);
MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(0, 10, 0, 10);
setLayoutParams(params);
*Редактировать. Я также попытался использовать MarginLayoutParams в качестве параметра при добавлении представлений в линейный макет (как показано ниже). Это также не сработало:
MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);
Ответы:
Вы должны
android:layout_margin<Side>
на детей. Обивка внутренняя.источник
API> = 11 решение:
Вы можете интегрировать заполнитель в разделитель. Если вы не использовали ничего, просто создайте высокий пустой рисованный объект и установите его как
LinearLayout
разделитель:empty_tall_divider.xml:
источник
GONE
. Указав,android:showDividers="middle"
вы получите только место, где вам это действительно нужно.Android теперь поддерживает добавление вида Space между представлениями. Он доступен начиная с 4.0 ICS.
источник
Пример ниже просто делает то, что вам нужно программно. Я использовал фиксированный размер (140 398).
источник
Начиная с уровня API 14, вы можете просто добавить (прозрачный) разделитель для рисования:
и он позаботится об остальном для вас!
источник
8dp
откуда это взялось?Используйте
LinearLayout.LayoutParams
вместоMarginLayoutParams
. Вот документация.источник
LinearLayout.LayoutParams
расширяется,MarginLayoutParams
и он наследует тот жеsetMargins()
метод, который вы использовали выше ...Если вы используете ActionBarSherlock , вы можете использовать com.actionbarsherlock.internal.widget.IcsLinearLayout:
источник
Использование отступов в макете Child View.
layout.xml
backage_text.xml
источник
Вы можете получить
LayoutParams
родительский элементLinearLayout
и применить к отдельным представлениям следующим образом:источник
Попробуйте добавить виджет Space после добавления вида следующим образом:
источник
Простой способ сделать это динамически - это добавить отступы для детей . Вы можете просто установить его, используя .setPadding () для объекта, который будет добавлен. Этот пример добавляет ImageView к LinearLayout:
Следующее изображение показывает два ImageViews, которые были добавлены с отступом:
источник
Если ваш макет содержит метки o какой-то контейнер для текста. Вы можете добавить в конце каждого текста "\ n", чтобы разбить строку и сделать пробел между элементами.
Пример:
источник