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

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

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

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

22.02.2015, 09:25. Просмотров 867. Ответов 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 RelativeLayout + Button
Дизайн: как задать программно интерфейс приложения? Android
LinearLayout vs RelativeLayout Android
RelativeLayout расположение объектов Android
Android MediaPlayer, как программно задать определенный файл на воспроизведение?
Задать размер кнопки программно Android
Задать программно свойства Fragment Android
Программно задать сим карту для звонков Android
Задать ScrollView программно Android
Программно задать цвет фона для View Android
RelativeLayout и Bitmap Android
TextView задать отступ программно Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Сообщений: 715
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
Сообщений: 715
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