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

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

Войти
Регистрация
Восстановить пароль
 
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
#1

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

19.03.2015, 14:55. Просмотров 316. Ответов 8
Метки нет (Все метки)

Всем привет!
Помогите, пожалуйста, решить проблему с лейаутами.
Такой вот код.
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     Некорретное отображение Лейаутов
Посмотрите здесь:

Некорретное соединение по протоколу Direct Play - Сети
Пытаюсь установить соединения по протоколу DirectPlay через hamachi. Необходимые порты открыты. Смотерли WireShark-ом. 25.151.224.190...

WAMPSERVER Version 2.4 - отображение в БД в Хроме (пишет ошибки, в уроках Баранцева отображение БД как обычная страница) - Web-серверы
Здравствуйте. Решил изучить селениум (скачал уроки М. Баранцева). Поставил WAMPSERVER Version 2.4 (всё по умолчанию). При установке БД...

отображение ***** - Delphi БД
Всем доброго времени суток! Как можно сделать так чтоб вводимые в Едит символы отображались звездочками(*)? А то пароль при вводе...

1C 8.x (тонкий) Отображение - 1С
Есть справочник "Цветы" и документ "Заказанное". В документе "Заказанное" есть реквизит "Цветы". Этому реквизиту присвоен тип...

Отображение 1 - Математика
Добрый вечер! Очень нужна помощь в решении нескольких задач, одну из которых я выложу уже сейчас. Это снимки на иностранном языке, но...

Отображение - PHP
Здравствуйте! Решил для общего развития сделать сайт :) Но,возникла проблема. Вот код: <?php include("header.html"); ?> <?php...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 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%
типа того
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 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. А сцена - растянута на остальное пространство...
Почему так?
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
19.03.2015, 15:52     Некорретное отображение Лейаутов #4
так все правильно, написать 0,75 и 0,25 это тоже самое что написать 3 и 1
первому достанется 1/4 часть экрана, а второму 3/4 части экрана
да уже, я не силен в объяснениях

какие бы цифры не писались в веса - сумма этих весов будет означать 100% покрытия экрана
а дальше надо разбрасывать свободное пространство обратно пропорционально весам, то есть 1/вес
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
19.03.2015, 16:04  [ТС]     Некорретное отображение Лейаутов #5
Паблито, ааа... То есть, если обратно пропорционально, то всё будет наоборот?
Хах. Тогда понятно. Спасибо Вам огромное.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 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
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
19.03.2015, 22:53     Некорретное отображение Лейаутов #7
Паблито, не совсем верно. Чтобы работало так как должно исходя из логики, нужно всего лишь установить размер 0dp вместо match_parent. С match_parent weight ведет себя не как ожидаешь.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 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     Некорретное отображение Лейаутов
Еще ссылки по теме:

отображение - Логика и множества
задает ли функция функция x->tg(x) отображения множества действительных чисел в себя?

Отображение - HTML, CSS
Во всех браузерах сайт видно нормально, а в internet explorer не видно некоторых элементов. Как это исправить.

Отображение - XML/XSL
Должны ли браузеры отображать xml файлы? Если я закачаю xml файл в каталог своего сайта на сервере, а на html странице дам на него ссылку...

Отображение - Windows 7
Привет всем, на фото видно слева проблему,трудно понять что єто...


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

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

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