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

Некорретное отображение Лейаутов - Android

Восстановить пароль Регистрация
 
Тамика
Котовчанин
 Аватар для Тамика
863 / 443 / 129
Регистрация: 16.02.2010
Сообщений: 2,565
Записей в блоге: 27
19.03.2015, 14:55     Некорретное отображение Лейаутов #1
Всем привет!
Помогите, пожалуйста, решить проблему с лейаутами.
Такой вот код.
C++
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
public class SampleActivity extends Activity {
 
    private FrameLayout controlView;
    private LinearLayout mViewPanel;
    private View scene;
 
    private void initViewPanel()
    {
        mViewPanel = new LinearLayout(this);
        mViewPanel.setOrientation(LinearLayout.HORIZONTAL);
        mViewPanel.setBackgroundColor(Color.RED);
    }
 
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        initViewPanel();
 
        controlView = new FrameLayout(this);
        controlView.setBackgroundColor(Color.BLUE);
 
        scene = new View(this);
        scene.setBackgroundColor(Color.GREEN);
 
        mViewPanel.addView(scene, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1));
        mViewPanel.addView(controlView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 2));
        setContentView(mViewPanel);
    }
}
Получается такая бяка.
Некорретное отображение Лейаутов
Наверное, я что-то не так поняла, но как работает weight? Почему для scene больше места? При том, если поменять строки местами, но НЕ МЕНЯТЬ вес, то синий лейаут будет больше...
Расскажите нубу, если не сложно, как оперировать весом... Я думала, что простыми соотношениями флоатов. Но, видимо, не так...
Заранее спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2015, 14:55     Некорретное отображение Лейаутов
Посмотрите здесь:

Отображение activity в layout Android
Android Отображение экран
отображение Listview Android
Зеркальное отображение Android
Android Отображение xml в WebView
Android Отображение даты
Отображение на Google Maps Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
19.03.2015, 15:23     Некорретное отображение Лейаутов #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Тамика Посмотреть сообщение
При том, если поменять строки местами, но НЕ МЕНЯТЬ вес, то синий лейаут будет больше...
не должен!

weight1 + weight2 = 100% (общий вес ТРИ)
то есть два лаяута займут 100% экрана, но поделят эти % обратно пропорционально весу
лаяут с весом ДВА попытается занять места в два раза меньше чем тот, с весом 1

вес 1 как бы говорит - я хочу ВСЕ 100%
а второй с весом 2 говорит, а мне достаточно 1/2 экрана

но ведь их двое и поэтому 1+2=3
100 - 100 * 1/3 = 66%
100 - 100 * 2/3 = 33%
типа того
Тамика
Котовчанин
 Аватар для Тамика
863 / 443 / 129
Регистрация: 16.02.2010
Сообщений: 2,565
Записей в блоге: 27
19.03.2015, 15:41  [ТС]     Некорретное отображение Лейаутов #3
Паблито, вот я так и думала, но меня сбило с толку то, что если вернуть эти две строчки в те, которые я изначально написала --
C++
1
2
        mViewPanel.addView(controlView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 0.75f));
        mViewPanel.addView(scene, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 0.25f));
, то контролВью очень маленькая, будто у неё вес 0.25. А сцена - растянута на остальное пространство...
Почему так?
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
19.03.2015, 15:52     Некорретное отображение Лейаутов #4
так все правильно, написать 0,75 и 0,25 это тоже самое что написать 3 и 1
первому достанется 1/4 часть экрана, а второму 3/4 части экрана
да уже, я не силен в объяснениях

какие бы цифры не писались в веса - сумма этих весов будет означать 100% покрытия экрана
а дальше надо разбрасывать свободное пространство обратно пропорционально весам, то есть 1/вес
Тамика
Котовчанин
 Аватар для Тамика
863 / 443 / 129
Регистрация: 16.02.2010
Сообщений: 2,565
Записей в блоге: 27
19.03.2015, 16:04  [ТС]     Некорретное отображение Лейаутов #5
Паблито, ааа... То есть, если обратно пропорционально, то всё будет наоборот?
Хах. Тогда понятно. Спасибо Вам огромное.
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
19.03.2015, 16:19     Некорретное отображение Лейаутов #6
у меня нет математического образования и я не уверен, что к месту использовал термин "обратно пропорционально"
могу разве что привести несколько примеров
дано 2 лаяута с весами w1 и w2 и будем считать что экран это 100%
тогда при весах
w1 = 1
w2 = 5
первый лаяут будет занимать очень много места на экране, а точнее 100 - 1/6 = 84%
второй 100 - 5/6 = 17%
другими словами: первый будет занимать в ПЯТЬ раз больше места чем второй, при этом они вместе займут 100% экрана

84/17 = 5 (ну примерно, я округляю для простоты)
--------------------------------------------------------------------

w1 = 3
w2 = 5
первый лаяут будет занимать 100 - 3/8 = 62.5%
второй 100 - 5/8 = 37.5%

3/5 = 37.5/62.5
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
19.03.2015, 22:53     Некорретное отображение Лейаутов #7
Паблито, не совсем верно. Чтобы работало так как должно исходя из логики, нужно всего лишь установить размер 0dp вместо match_parent. С match_parent weight ведет себя не как ожидаешь.
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
19.03.2015, 23:29     Некорретное отображение Лейаутов #8
ха, точно
получается при match_parent вес становится как бы наоборот
а я так уже привык выставлять веса что даже и не думал 0dp ставить
оно работает и так и так, просто для обычного человека конечно логичнее 0dp и веса тогда не обратно пропорциональны!
это ценная информация
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2015, 08:56     Некорретное отображение Лейаутов
Еще ссылки по теме:

Get запрос и отображение ответа Android
Непонятное отображение spinner Android
Отображение имени трека Android
Некорректное отображение содержания Android
Android Отображение ScrollView в LinearLayout

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

Или воспользуйтесь поиском по форуму:
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
20.03.2015, 08:56     Некорретное отображение Лейаутов #9
Еще в родителе не забывайте есть параметр сумма веса.
Yandex
Объявления
20.03.2015, 08:56     Некорретное отображение Лейаутов
Ответ Создать тему
Опции темы

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