Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
10 / 10 / 3
Регистрация: 30.01.2012
Сообщений: 366

TextView друг под другом программно

20.05.2016, 07:03. Показов 3942. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Появилась проблемка с динамическим расположением элементов TextView,
проблема в том что на 0-ой элемент налаживается 1-ый, а остальные уже идут друг под другом как надо, мне кажется я какие-то не те параметры задаю нулевому элементу.
Ребята, объясните что не так, пожалуйста.
Вот код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 for(int i=0; i<alias.teams.size();i++){
 
            TextView text_view = new TextView(this);
            String teamName = alias.teams.get(i).getName();
 
            text_view.setText(teamName);
            text_view.setId(i);
 
            linearParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
 
            if(i==0){
                linearParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
            }else{
                linearParams.addRule(RelativeLayout.BELOW, text_view.getId()-1);
            }
 
           text_view.setLayoutParams(linearParams);
            lLayout.addView(text_view);
}
Вот так это выглядит на экране(смотрите изображение)
Кто нибудь разъясните что я делаю не так.
Миниатюры
TextView друг под другом программно  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2016, 07:03
Ответы с готовыми решениями:

TextView расположение друг под другом
доброго времени суток господа. текст выводится друг за другом в строчку. а как реализовать что бы каждый новый набранный и сохраненный...

Как избежать наложения друг на друга textview
Есть такой layout &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;LinearLayout...

Программно разместить компоненты друг под другом
Я динамически создаю LinkButtonы, они отображаются в одну строку, у меня никак не получается сделать так, чтобы они отображались в...

10
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
20.05.2016, 10:29
Сделайте LinearLayout и вложите в ваш RelativeLayout
0
10 / 10 / 3
Регистрация: 30.01.2012
Сообщений: 366
20.05.2016, 13:35  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Сделайте LinearLayout и вложите в ваш RelativeLayout
Не понял, для каждого елемента нужно LinearLayout? А если я еще хочу напротив надписи выводить(справа) еще TextView
типа такого вида:
|TextView | TextView|
|TextView | TextView|
|TextView | TextView|
Что посоветуете?
0
100 / 79 / 9
Регистрация: 03.08.2014
Сообщений: 447
20.05.2016, 13:49
Упс, в ответе ошибся с темой. Извини, топикстартер
0
10 / 10 / 3
Регистрация: 30.01.2012
Сообщений: 366
20.05.2016, 13:51  [ТС]
Цитата Сообщение от Alexvp Посмотреть сообщение
Упс, в ответе ошибся с темой. Извини, топикстартер
Ну так может тут чем поможешь
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
20.05.2016, 14:40
во-первых определить - друг под другом или по два в ряд, а то кто-то напишет решение, а потом "ой, а мне надо вообще не так, а зеленым прозрачным цветом"

во-вторых в коде выше неправильно назначаются id элементам, нельзя просто так взять и сделать id-1
то есть переменная уменьшится на единицу, но так не делается
динамически создавать и назначать id можно примерно так
Java
1
textView.setId(View.generateViewId());
в-третьих, если таких textview будет много то не проще ли сделать это списком?
RecyclerView или ListView если не осилил ресайклеры

что, ты спрашиваешь как пользоваться RecyclerView?
тем на форуме и в интернете полно
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
20.05.2016, 16:00
Цитата Сообщение от Mcr Посмотреть сообщение
Не понял, для каждого елемента нужно LinearLayout? А если я еще хочу напротив надписи выводить(справа) еще TextView
типа такого вида:
|TextView | TextView|
|TextView | TextView|
|TextView | TextView|
Что посоветуете?
Создаётся линеар и вкладывается туда нужная вью, если нужно в две колонки - самое простое вложить в линеар вертикальный n линеаров горизонтальных, а в каждый горизонтальный два текствью, если нужно потом что-то с ними делать, лучше не setId, а setTag.

Добавлено через 2 минуты
Ещё можно всю эту байду нарисовать в разметке и потом что-то типо View view = LayoutInflater.from(context).inflate(R.l ayout.view, null);
0
10 / 10 / 3
Регистрация: 30.01.2012
Сообщений: 366
20.05.2016, 16:21  [ТС]
Цитата Сообщение от Паблито Посмотреть сообщение
во-первых определить - друг под другом или по два в ряд, а то кто-то напишет решение, а потом "ой, а мне надо вообще не так, а зеленым прозрачным цветом"
По два в ряд.

Цитата Сообщение от Паблито Посмотреть сообщение
во-вторых в коде выше неправильно назначаются id элементам, нельзя просто так взять и сделать id-1
то есть переменная уменьшится на единицу, но так не делается
динамически создавать и назначать id можно примерно так
Это я возьму на заметку.


Цитата Сообщение от Паблито Посмотреть сообщение
в-третьих, если таких textview будет много то не проще ли сделать это списком?
RecyclerView или ListView если не осилил ресайклеры
что, ты спрашиваешь как пользоваться RecyclerView?
тем на форуме и в интернете полно
А тут меня не интересует список, потому что у меня будет максимум 10 рядов.

Ну так подскажите как это сделать...или это у меня c Id-шниками проблема?

Добавлено через 13 минут
Цитата Сообщение от ExFau$t Посмотреть сообщение
Создаётся линеар и вкладывается туда нужная вью, если нужно в две колонки - самое простое вложить в линеар вертикальный n линеаров горизонтальных, а в каждый горизонтальный два текствью, если нужно потом что-то с ними делать, лучше не setId, а setTag.
Спасибо попробую )
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
20.05.2016, 16:30
добавлять по две это не проблема
важнее понимать как это должно выглядеть
эти две вьюшки будут делить экран по ширине поровну или будут лепиться одна к другой
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
20.05.2016, 18:15
короче переделал немного код из другого своего примера
textview вставляются в две колонки и делят доступное по горизонтали место поровну
1. подключаем в build.gradle новый GridLayout который поддерживает веса
XML
1
    compile 'com.android.support:gridlayout-v7:23.4.0'
2. где-то в разметку вставляем сам GridLayout в который будут вставляться текствьюшки
XML
1
2
3
4
5
6
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:columnCount="2" />
3. и код в активити, который совершает магию
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        final GridLayout gridLayout = (GridLayout) findViewById(R.id.container);
        for (int i = 1; i <= 10; i++) {
            TextView tv = new TextView(this);
            tv.setText("Группа " + i);
            final GridLayout.LayoutParams lp = new GridLayout.LayoutParams();
            lp.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f);
            gridLayout.addView(tv, lp);
        }
    }
4. PROFIT
1
10 / 10 / 3
Регистрация: 30.01.2012
Сообщений: 366
21.05.2016, 10:38  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Создаётся линеар и вкладывается туда нужная вью, если нужно в две колонки - самое простое вложить в линеар вертикальный n линеаров горизонтальных, а в каждый горизонтальный два текствью, если нужно потом что-то с ними делать, лучше не setId, а setTag.
Спасибо мне помог ваш ответ

Отчет о проделанной работе
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
for(int i=0; i<alias.teams.size();i++) {
            /*create textview*/
            TextView text_view = new TextView(this);
            TextView textViewRating = new TextView(this);
            /*get name and rating from class alias*/
            String teamName = alias.teams.get(i).getName();
            int teamRating = alias.teams.get(i).getRating();
 
            /*set text in textView and add to list*/
            text_view.setText(teamName);
            text_view.setTextSize(21f);
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f);
            text_view.setLayoutParams(lp);
 
            textViewRating.setText(String.format("%1$d", teamRating));
            textViewRating.setTextSize(21f);
 
            /*Create linear layout*/
            linearLayout = new LinearLayout(this);
            linearLayout.setOrientation(LinearLayout.HORIZONTAL);
            /*set linear layout params */
            linearParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            linearLayout.setLayoutParams(linearParams);
 
            /*in created layout add created textviews*/
            linearLayout.addView(text_view);
            linearLayout.addView(textViewRating);
 
            /*and created layout added to current layout*/
            currentLinear.addView(linearLayout);
        }
Миниатюры
TextView друг под другом программно  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2016, 10:38
Помогаю со студенческими работами здесь

Как создавая контролы программно, располагая их друг под другом без указания положения?
Добрый вечер! Такой вопрос: как создавая контролы программно, распологать их друг под другом без указания положения? ...

Td в таблице друг под другом
Здравствуйте. Подскажите, пожалуйста, как сделать так, чтобы в одной строке таблицы (tr) ячейки были друг под другом? То есть так: ...

Блоки друг под другом
Всем привет. Есть такая задача: есть несколько блоков с классом .item Надо разбить эти блоки по 2 колонкам и что бы они шли сразу друг...

Расположение блоков друг под другом
Доброго времени суток! Суть проблемы в том что располагая div под div с position:fixed нужно указывать внешний отступ равный фиксированому...

QwtPlot несколько графиков друг под другом
Народ подскажите, если кто знает как построить на QwtPlot примерно такой график.


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru