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

Перерисовка layout - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Случайные неповторяющиеся числа http://www.cyberforum.ru/android-dev/thread1459914.html
Нужно сделать генератор случайных уникальных чисел. Сам дошел только до такого варианта, но он, понятно, не работает правильно - значения все равно повторяются. В конечном виде программы будет 137...
Программирование Android Где найти примеры игр на Android? Все доброго уважаемые! Вопрос не тривиальный. Изучаю Android, в пример решил сделать собственное приложение, а именно игру. Какую-нибудь простую головоломку с выбором уровней. Где можно найти... http://www.cyberforum.ru/android-dev/thread1459907.html
Программирование Android Сериализация и шифрование массива объектов
Здравствуйте, пишу простое приложение на Android. Суть проблемы: имеется ArrayList с объектами моего класса, в классе 5 строковых полей, у меня не получается сделать так, чтобы этот список...
Google api authentication не работает Программирование Android
Почему то перестала работать аутентификация. Кто что слышал? SpreadsheetService service = new SpreadsheetService("MySpreadsheetIntegration-v1"); // TODO: Authorize the...
Программирование Android Вывод в textView из БД http://www.cyberforum.ru/android-dev/thread1459641.html
У меня есть БД public void onCreate(SQLiteDatabase db) { // создаем таблицу с полями db.execSQL("create table mystudent (" + "id integer primary key autoincrement," + "name text,"...
Программирование Android Игра пакман на андроид я делаю игру пэкмэн под андроид,это моя курсовая.. запоролся полностью с построением самой игры где нибудь есть исходники более менее вменяемые,которые можно поизучать? подробнее

Показать сообщение отдельно
lavan
52 / 52 / 1
Регистрация: 21.03.2009
Сообщений: 371

Перерисовка layout - Программирование Android

27.05.2015, 14:42. Просмотров 444. Ответов 1
Метки (Все метки)

здравствуйте,может кто сталкивался с такой проблемой
имею такой xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 <RelativeLayout
                          android:layout_width="match_parent"
                          android:layout_height="match_parent"
                          android:background="@android:color/black"
                          android:visibility="visible"
                          android:id="@+id/lb_lobby_center_layout">
 
 
 
                <include layout="@layout/lb_top_banner"
                         android:layout_height="115dp"
                         android:layout_width="match_parent"
                         android:layout_below="@+id/lb_top_menu_parent"
                        />
                <include layout="@layout/lb_top_menu"
                         android:layout_height="65dp"
                         android:layout_width="match_parent"
                        />
                <include layout="@layout/lb_ctg_game"
                         android:layout_height="match_parent"
                         android:layout_width="match_parent"
                         android:layout_below="@+id/lb_top_banner_ll_parent"/>
            </RelativeLayout>
layout под названием lb_top_banner поднимается вверх по оси Y(иммитация скролла) т.е этот lb_top_banner исчезнет когда его bottom сравняется с 0 на оси координат.layout (lb_ctg_game)который под ним должен изменить сою высоту на размер убранного layout(lb_top_banner ). имею следующее:
layout(lb_ctg_game) меняет свой topmargin но не меняет свою высоту.т.е между поледним layout(lb_ctg_game) и физическим дном телефона остаётся пустое место, высотой равной убранному layout(lb_top_banner ) .
вопрос как заставить layout (lb_ctg_game)занять по высоте всё пространство?
(если вызывать requestLayout() то эти два layout просто проподают)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 private void replaceView(int deltaY)
    {
        RelativeLayout.LayoutParams bannersParam = (RelativeLayout.LayoutParams) disappearView.getLayoutParams();
        RelativeLayout.LayoutParams gameContainerParams = (RelativeLayout.LayoutParams) gameContainer.getLayoutParams();
        int top =0, bottom = 0;
        if (isGoUp)
        {
            top = disappearView.getTop();
            bottom = disappearView.getBottom();
            if ((bottom - deltaY) > topBorder)
            {
                bannersParam.topMargin = top - deltaY;
                bannersParam.bottomMargin = bottom - deltaY;
                //disappearView.setLayoutParams(params2);
                disappearView.layout(disappearView.getLeft(),bannersParam.topMargin,disappearView.getRight(),bannersParam.bottomMargin);
                //disappearView.requestLayout();
                gameContainerParams.topMargin =bannersParam.bottomMargin;
                int yyy = gameContainer.getBottom() + deltaY;
                //gameContainer.setLayoutParams(listParams);
                gameContainer.layout(gameContainer.getLeft(),gameContainerParams.topMargin,gameContainer.getRight(),yyy);//gameContainer.getBottom()
                //layout(getLeft(),getTop(),getRight(),yyy);//getBottom()
                gameContainer.forceLayout();
                //gameContainer.requestLayout();
            }
            else
            {
                bannersParam.bottomMargin = topBorder -10;
                bannersParam.topMargin= bannersParam.bottomMargin -  disappearView.getHeight();
                disappearView.layout(disappearView.getLeft(),bannersParam.topMargin,disappearView.getRight(),bannersParam.bottomMargin);
                //disappearView.requestLayout();
                gameContainerParams.topMargin =topBorder;
                int yyy = gameContainer.getBottom() + disappearView.getHeight();
                //yyy = listParams.topMargin+yyy;
                //gameContainer.setLayoutParams(gameContainerParams);
                int th = gameContainer.getHeight();
                gameContainer.layout(gameContainer.getLeft(),gameContainerParams.topMargin,gameContainer.getRight(),yyy);//
                //layout(getLeft(),getTop(),getRight(),yyy);//getBottom()
                gameContainer.forceLayout();
                //gameContainer.requestLayout();
 
            }
        }
        else
        {
            int d = getFirstVisiblePosition();
            if (getFirstVisiblePosition() != 0)
                return;
            top = disappearView.getTop();
            bottom = disappearView.getBottom();
            if ((top + deltaY)<topBorder)
            {
                bannersParam.topMargin = top + deltaY;
                bannersParam.bottomMargin = bottom + deltaY;
                //disappearView.setLayoutParams(params2);
                disappearView.layout(disappearView.getLeft(),bannersParam.topMargin,disappearView.getRight(),bannersParam.bottomMargin);
                disappearView.forceLayout();
                gameContainerParams.topMargin =bannersParam.bottomMargin;
                gameContainer.layout(gameContainer.getLeft(), gameContainerParams.topMargin, gameContainer.getRight(), gameContainer.getBottom());
                //layout(getLeft(),listParams.topMargin,getRight(),getBottom());
                gameContainer.forceLayout();
               // gameContainer.invalidate();
 
            }
            else
            {
                bannersParam.topMargin= initionalY;
                bannersParam.bottomMargin = bannersParam.topMargin +  disappearView.getHeight();
                disappearView.layout(disappearView.getLeft(),bannersParam.topMargin,disappearView.getRight(),bannersParam.bottomMargin);
                disappearView.forceLayout();
                gameContainerParams.topMargin = bannersParam.bottomMargin;
                int yyy = gameContainer.getBottom();
                gameContainer.layout(gameContainer.getLeft(), gameContainerParams.topMargin, gameContainer.getRight(), gameContainer.getBottom());
                //layout(getLeft(),listParams.topMargin,getRight(),getBottom());
                gameContainer.forceLayout();
               // gameContainer.invalidate();
 
            }
 
        }
    }
перемещение происходит по событию onTouch()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru