Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
avvvl
3 / 3 / 1
Регистрация: 16.06.2013
Сообщений: 185
#1

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

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

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

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

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

Как организовать такое расположение элементов в Xamarin.Forms?
Подскажите, пожалуйста. При старте в коде я создаю такие объекты: public...

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

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

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

Добавлено через 10 часов 43 минуты
Не layout_width а layout_weight
1
Strelok45
11 / 11 / 6
Регистрация: 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 / 1
Регистрация: 16.06.2013
Сообщений: 185
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
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
08.08.2014, 19:53 #7
Java
1
2
button1.getLayoutParams().height = 1;
button1.getLayoutParams().width  = 1;
Но в пикселях размер указывать не рекомендуется категорически.
1
Strelok45
11 / 11 / 6
Регистрация: 18.02.2010
Сообщений: 149
09.08.2014, 04:22 #8
Цитата Сообщение от avvvl Посмотреть сообщение
Как в таком варианте сделать кнопки еще меньше? Я ставлю 1рх, но меньше стандартного(как его еще назвать) размера не становятся.
1. использование пикселей нецелесообразно, так как кнопки на разных экранах будут разные без масштабирования (используй dp)
2. у всякой управляющей кнопки должны быть минимальные размеры (порядка 48dp -7-10 мм на реальном устройстве) - как тыкать то по ним пользльзователи будут, если они по 1 пиксель)
0
09.08.2014, 04:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2014, 04:22
Привет! Вот еще темы с решениями:

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

Адаптация под разные экраны
покопался в гугле но ни как не поймую при создании проекта(Android, Eclipse)...

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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