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

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

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

Условие открытия WebView при нажатии на разные кнопки Android
Android Расположение SeekBar: чтобы картинка на заднем плане была все также растянута по всей высоте и ширине экрана
Android Вывод разного текста по клику на разные кнопки
Android Адаптация под разные экраны
Android Расположение экрана эмулятора на экране монитора
Как лучше организовать напоминалку? Android
Android Как адаптировать приложение под все экраны смартфонов?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,640
Завершенные тесты: 1
06.08.2014, 21:15     Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) #2
У лейаута в котором кнопки layout_height и layout_width установите wrap_content
avvvl
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 172
06.08.2014, 21:51  [ТС]     Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) #3
как можно лайаут с кнопками прижать к правому краю? возможно ли? или тогда нужно все переделывать основательно?
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,640
Завершенные тесты: 1
07.08.2014, 08:45     Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) #4
Можно, способов куча. Например сложить все в relative_layout и в нем уже расположить элементы как угодно(можно даже руками в редакторе передвигать). Можно сделать совершенно любое расположение элементов используя лишь linear_layout все зависит от ситуации, попробуйте просто различные варианты даже просто наугад потыкать) Почитайте про layout_width.

Добавлено через 10 часов 43 минуты
Не layout_width а layout_weight
Strelok45
 Аватар для Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
08.08.2014, 07:32     Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) #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 (синим для наглядности).
avvvl
3 / 3 / 0
Регистрация: 16.06.2013
Сообщений: 172
08.08.2014, 19:50  [ТС]     Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) #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);
    }
 
 
}
Миниатюры
Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны)  
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,640
Завершенные тесты: 1
08.08.2014, 19:53     Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) #7
Java
1
2
button1.getLayoutParams().height = 1;
button1.getLayoutParams().width  = 1;
Но в пикселях размер указывать не рекомендуется категорически.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2014, 04:22     Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны)
Еще ссылки по теме:

Android Расположение кнопки при программном добавлении
Android Как лучше организовать массив String[] из 60 элементов?
Android Посоветуйте утилиту для создания картинок под разные экраны Android
5.2'' и 5.0'' экраны - разные лэйауты в итоге. Как добавить values\dimens.xml(1080*1920 420dpi)? Android
Android C# оптимизация приложения под разные экраны(не GUI)

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

Или воспользуйтесь поиском по форуму:
Strelok45
 Аватар для Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
09.08.2014, 04:22     Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны) #8
Цитата Сообщение от avvvl Посмотреть сообщение
Как в таком варианте сделать кнопки еще меньше? Я ставлю 1рх, но меньше стандартного(как его еще назвать) размера не становятся.
1. использование пикселей нецелесообразно, так как кнопки на разных экранах будут разные без масштабирования (используй dp)
2. у всякой управляющей кнопки должны быть минимальные размеры (порядка 48dp -7-10 мм на реальном устройстве) - как тыкать то по ним пользльзователи будут, если они по 1 пиксель)
Yandex
Объявления
09.08.2014, 04:22     Как лучше организовать расположение компонентов на экране? (картинка и 3 кнопки на разные экраны)
Ответ Создать тему
Опции темы

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