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

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

Войти
Регистрация
Восстановить пароль
 
avvvl
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 176
#1

Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) - Программирование Android

06.08.2014, 20:14. Просмотров 993. Ответов 7
Метки нет (Все метки)

Я делаю приложение с увеличением компонентов программно. По такому принципу Кнопка.УстановитьШирину(РазмерЭкранаПоШирине / 10). Но проблема появилась, когда надо было сделать что-то вроде как на картинке. Там 1 LinearLayout (Vertical) в нем ImageView и еще 1 LinearLayout (Vertical), в котором 3 Button. Как сделать что б было так как на экране? Кнопки должны быть маленькие, но увеличиваться при большем экране(учитывая мою формулу). У меня так получается, что кнопки липнут к размеру самого Layout и не реагируют(не становяться ни больше не меньше).
0
Миниатюры
Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2014, 20:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) (Программирование Android):

5.2'' и 5.0'' экраны - разные лэйауты в итоге. Как добавить values\dimens.xml(1080*1920 420dpi)? - Программирование Android
Привет! Я боролся с этой проблемой около недели и не могу понять, как заставить это работать. У меня есть въюхи на экране. И один values\...

Как можно реализовать такое расположение компонентов? - Java
Вот на данном скрине видно, что сообщения располагаются следующим образом: сообщение от отправителя слева, сообщение от собеседника справа....

разные экраны смерти - BSOD
Появилась проблема. Компьютер зависает и выпадает bsod. Сегодня выпало два. Еще один 7-го числа , с одним кодом ошибки:...

Отцентрировать под разные экраны - HTML, CSS
Добрый вечер! Как сделать чтобы страничка отображалась хорошо на разных экранах. Чтобы картинки были по центру и не надо было двигать...

Адаптация под разные экраны - Программирование Android
покопался в гугле но ни как не поймую при создании проекта(Android, Eclipse) Изночально получаеш формочку определённого размера. Но у...

Постоянно разные синие экраны - BSOD
Здравствуйте!ПРоблема уже более полугода.Отдавал в ремонт сказали все ок(Скорее всего контора оборванцев была,ничего не толкуют в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
06.08.2014, 21:15 #2
У лейаута в котором кнопки layout_height и layout_width установите wrap_content
1
avvvl
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 176
06.08.2014, 21:51  [ТС] #3
как можно лайаут с кнопками прижать к правому краю? возможно ли? или тогда нужно все переделывать основательно?
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
07.08.2014, 08:45 #4
Можно, способов куча. Например сложить все в relative_layout и в нем уже расположить элементы как угодно(можно даже руками в редакторе передвигать). Можно сделать совершенно любое расположение элементов используя лишь linear_layout все зависит от ситуации, попробуйте просто различные варианты даже просто наугад потыкать) Почитайте про layout_width.

Добавлено через 10 часов 43 минуты
Не layout_width а layout_weight
1
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
08.08.2014, 07:32 #5
Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны)
Кликните здесь для просмотра всего текста
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    //родительский linearlayout, с горизонтальной ориентацией
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" > 
 
    <LinearLayout
        //внутренний linearlayout, с вертикальной ориентацией
        android:layout_width="0dp" //0 - для того, чтобы убрать вычислений лишние, т.к. выстраивается по весу ширина
        android:layout_height="match_parent" //занимает весь объем предоставленный по высоте
        android:layout_weight="8" //занимает 8/10 пространства по ширине
        android:orientation="vertical" >
 
        <ImageView
            //наша картинка
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top|center_horizontal" //выравнивание сверху и по центру
            android:layout_marginTop="50dp" //отступ сверху на 50dp
            android:src="@drawable/ic_launcher" />  
 
    </LinearLayout>
 
    <LinearLayout
        //внутренний linearlayout, с вертикальной ориентацией
        android:layout_width="0dp"
        android:layout_height="wrap_content"  
        android:layout_weight="2"
        android:orientation="vertical" >
 
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
 
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
 
        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
 
    </LinearLayout>
 
</LinearLayout>

Делается все просто:
Делаем родительский Linearlayout, который занимает весь экран (с горизонтальной ориентацией) он является контейнером для остальных объектов. Далее делаем два LinearLayout внутри него (с вертикальной ориентацией) и устанавливаем им параметры веса weight. Используя его можно подобрать соотношение на любой экран для объектов. Кстати обрати внимание, что во втором layout высота определена по содержимому, и кнопки могут получиться разными если будут на них надписи разной длинны - тогда опять же обратиться к весу можно (необходимо добавить пустой textview после последней кнопки, сделать layot по высоте на весь объем и настроить вес кнопок) На рисунке выше представлено, как будет выглядеть два внутренних Linearlayout (синим для наглядности).
1
avvvl
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 176
08.08.2014, 19:50  [ТС] #6
Strelok45
Как в таком варианте сделать кнопки еще меньше? Я ставлю 1рх, но меньше стандартного(как его еще назвать) размера не становятся.
XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" > 
 
    <LinearLayout
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="8" 
        android:orientation="vertical" >
 
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top|center_horizontal" 
            android:layout_marginTop="50dp"
            android:src="@drawable/ic_launcher" />  
 
    </LinearLayout>
 
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"  
 
        android:layout_weight="2"
        android:orientation="vertical" >
 
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
 
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
 
        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
 
    </LinearLayout>
</LinearLayout>
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MainActivity extends ActionBarActivity {
    
    Button button1;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button1 = (Button) findViewById(R.id.button1);
        button1.setWidth(1);
        button1.setHeight(1);
    }
 
 
}
0
Миниатюры
Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны)  
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
08.08.2014, 19:53 #7
Java
1
2
button1.getLayoutParams().height = 1;
button1.getLayoutParams().width  = 1;
Но в пикселях размер указывать не рекомендуется категорически.
1
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
09.08.2014, 04:22 #8
Цитата Сообщение от avvvl Посмотреть сообщение
Как в таком варианте сделать кнопки еще меньше? Я ставлю 1рх, но меньше стандартного(как его еще назвать) размера не становятся.
1. использование пикселей нецелесообразно, так как кнопки на разных экранах будут разные без масштабирования (используй dp)
2. у всякой управляющей кнопки должны быть минимальные размеры (порядка 48dp -7-10 мм на реальном устройстве) - как тыкать то по ним пользльзователи будут, если они по 1 пиксель)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2014, 04:22
Привет! Вот еще темы с ответами:

Постоянно разные Синие Экраны? - BSOD
У меня проблема, с синими окнами причем постоянно разными... . методом проверок и тестов.... : - Биос обновил - ОС менял на разные...

Разные экраны смерти, переустановка ОС не помогает - BSOD
Ребята помогите решить проблему. Почитал форум и понимаю что не могу самостоятельно решить проблему вот скрины синего экрана кому не...

Синие Экраны почти всегда разные - BSOD
Недавно купил новый компьютер и вскоре начали выскакивать синие экраны, выложу несколько дампов, т.к. у самого не получилось посмотреть...

Изменение размеров UI под разные экраны - Unity, Unity3D
Пишу игру под андройд Пытаюсь сделать,чтобы Текст,кнопки,поля ввода подстраивались под размеры экрана. В свойствах Canvas, Scale Mode...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.08.2014, 04:22
Ответ Создать тему
Опции темы

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