Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
#1

Задать программно leftMargin для RelativeLayout - Программирование Android

22.02.2015, 09:25. Просмотров 926. Ответов 5
Метки нет (Все метки)

Имеется заготовка view:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/market_layout"
    android:orientation="horizontal">
    <HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/horizontalScrollView"
        android:layout_gravity="center_horizontal"
        android:layout_weight="1">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/market_linear_layout_in_hsv">
 
        </LinearLayout>
    </HorizontalScrollView>
</LinearLayout>
В LinearLayout с id = market_linear_layout_in_hsv программно добавляются RelativeLayout (которые в себе содержат Button, TextView, ImageView).
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//ищем LinearLayout с id = market_linear_layout_in_hsv
        market_ll = (LinearLayout)findViewById(R.id.market_linear_layout_in_hsv);
//создаем параметры отображения для TextView, ImageView, Button
        RelativeLayout.LayoutParams TVParams = new RelativeLayout.LayoutParams(RLwrapContent, RLwrapContent );
        RelativeLayout.LayoutParams IVParams = new RelativeLayout.LayoutParams(250, 400);
        RelativeLayout.LayoutParams BParams = new RelativeLayout.LayoutParams(RLwrapContent, RLwrapContent);
//устанавливаем параметры отображения для компонентов RelativeLayout
        TVParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
        TVParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
 
        IVParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
        IVParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
 
        BParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
        BParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
//создаем параметры отображения для наших RelativeLayout
        ViewGroup.MarginLayoutParams mlp = new ViewGroup.MarginLayoutParams(RLMatchParent, RLMatchParent);
 
        if (folder.exists()) {
            String[] files = folder.list();
            relationsIdMarket = new ArrayList<RelationsIdMarket>(files.length);
            for (int i = 0; i < files.length; i++){
//для первого RelativeLayout нужно установить отступ с лева 100
                mlp.leftMargin = i==0?100:0;
//создание элементов и установка им свойсв
                RelationsIdMarket rim = new RelationsIdMarket();
 
                rim.idProduct = i;
                rim.idTextView = ViewIdGenerator.generateViewId();
                rim.idImageView = ViewIdGenerator.generateViewId();
                rim.idButton = ViewIdGenerator.generateViewId();
 
                TextView tv = new TextView(this);
                tv.setText("Название");
 
                tv.setId(rim.idTextView);
 
                ImageView iv = new ImageView(this);
                if(GeneralData.images.size() == i)
                    GeneralData.images.add(BitmapFactory.decodeFile(pathToImg+"/"+files[i]));
 
                iv.setImageBitmap(GeneralData.images.get(i));
 
                iv.setId(rim.idImageView);
                iv.setImageBitmap(rp.bmp);
 
                Button btn = new Button(this);
                btn.setText("Открыть");
                btn.setOnClickListener(this);
 
                btn.setId(rim.idButton);
//создаем наш RelativeLayout 
                RelativeLayout rl = new RelativeLayout(this);
//добавляем в него TextView ImageView Button с нужными параметрами
                rl.addView(tv, TVParams);
                rl.addView(iv, IVParams);
                rl.addView(btn, BParams);
                rl.setPadding(50, 0, 50, 0);
//добавляем наш RelativeLayout в LinearLayout
                market_ll.addView(rl, mlp);
 
                relationsIdMarket.add(rim);
            }
        }
но отступ у первого RelativeLayout не устанавливается,
пробовал так:
Java
1
2
3
4
//создаем свойства отображения для RelativeLayout  
RelativeLayout.LayoutParams RLParams = new RelativeLayout.LayoutParams(RLMatchParent, RLMatchParent);
//устанавливаем отступы
RLParams.setMargins(100, 0, 0,0);
Так тоже не работает, не могу понять в чем проблема ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2015, 09:25     Задать программно leftMargin для RelativeLayout
Посмотрите здесь:

Программно задать сим карту для звонков - Программирование Android
Как можно программно задать сим карту для звонков? Например у меня стоит &quot;Всегда спрашивать&quot;, а когда программа включается она должна...

Программно задать цвет фона для View - Программирование Android
Возникла проблема с установкой фона для View. Получаю цвет через класс Color Код: RelativeLayout rl; @Override protected void...

Задать ScrollView программно - Программирование Android
Здраствуйте! Как сделать ScrollView с элементом LinearLayout программно? Делаю одно, не работает другое... ScrollView scroll = new...

Задать размер кнопки программно - Программирование Android
Здравствуйте. Возник такой вопрос: В программе я использую несколько кнопок, размер которых зависит от размера экрана (не обязательно...

Задать программно свойства Fragment - Программирование Android
Доброго времени суток, я новичок в этом деле, поетому хочу попросить у вас помощи, мне нужно передать фрагменту программно свойства, у меня...

TextView задать отступ программно - Программирование Android
Программно создаю TextView . Присваиваю ему ряд значений textView.setGravity(Gravity.CENTER); textView.setMaxEms(10); ...

Дизайн: как задать программно интерфейс приложения? - Программирование Android
Здравствуйте. Расскажите мне пожалуйста как можно больше про дизайн приложений. Раньше я работал с css html и т.п. Мне...

MediaPlayer, как программно задать определенный файл на воспроизведение? - Программирование Android
собственно как работать с данным классом, и как программно задать определенный файл на воспроизведение? спасибо!

RelativeLayout и Bitmap - Программирование Android
Можно ли поставить на задний фон RelativeLayout Bitmap. Или преобразовать Bitmap в Drawable? P.S. Именно Bitmap, а не BitmapDrawable/

RelativeLayout + Button - Программирование Android
Народ как лучше делать разметку в xml Есть RelativeLayout (с картинкой в background) и на нем надо расположить Button, в определенном...

LinearLayout vs RelativeLayout - Программирование Android
этот LinearLayout вообщевозможно переделать на RelativeLayout??? &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;LinearLayout ...

RelativeLayout расположение объектов - Программирование Android
Вопрос: как с помощью relativeLayout программно задать отступ от краев родителя, то есть задать, например это:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dtx1212
6 / 6 / 1
Регистрация: 08.12.2013
Сообщений: 26
22.02.2015, 15:36     Задать программно leftMargin для RelativeLayout #2
Зачем вообще такие извращения? Просто задайте этот RelativeLayout со всеми элементами в xml и делайте его видимым когда нужно. Если же их нужно добавить несколько подряд используйте ListView.
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
22.02.2015, 16:44  [ТС]     Задать программно leftMargin для RelativeLayout #3
dtx1212, Задача такая: считывать из файла некоторую инфу, и уже на основе ее генерировать N-е количество элементов управления. Для этого лучше использовать LIstView ?

Добавлено через 9 минут
причем в каждом item'е должен содержаться TextView, ImageView, Button.

Добавлено через 14 секунд
А прокрутка должна быть горизонтальной
dtx1212
6 / 6 / 1
Регистрация: 08.12.2013
Сообщений: 26
22.02.2015, 17:31     Задать программно leftMargin для RelativeLayout #4
NEvOl, ну да ListView, а для того чтобы имелась горизонтальная прокрутка можешь использовать к примеру эту его реализацию.
https://github.com/sephiroth74/Horiz...riableListView
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
22.02.2015, 18:14  [ТС]     Задать программно leftMargin для RelativeLayout #5
dtx1212, я так понимаю из всего что там есть, меня интересует только gradle-wrapper.jar, а то я не смог запустить тот проект в Android Studio ?
dtx1212
6 / 6 / 1
Регистрация: 08.12.2013
Сообщений: 26
22.02.2015, 18:17     Задать программно leftMargin для RelativeLayout #6
NEvOl, чтобы подключить библиотеку тебе просто нужно добавить в build.gradle
Java
1
compile 'it.sephiroth.android.library.horizontallistview:hlistview:1.2.2'
Скачивать оттуда ничего не нужно.
Yandex
Объявления
22.02.2015, 18:17     Задать программно leftMargin для RelativeLayout
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru