Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
androman
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 29
1

Доступ к элементам вью во время создания Activity

09.03.2017, 07:12. Просмотров 356. Ответов 6
Метки нет (Все метки)

Есть Activity. На ней textView. Мне нужно поставить этот textView в определенное место в зависимости от размера экрана.
Хочу вызывать textView.getTop() при onCreate. Но, он там возвращает 0, а не реальное значение. Как можно получить доступ к свойствам вью во время создания Activity?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2017, 07:12
Ответы с готовыми решениями:

Доступ к элементам Activity из другого класса
Есть Activity, в её классе создаю экземпляр другого класса twoclass tw = new twoclass();...

Может ли объемлющий класс иметь неограниченный доступ к элементам вложенного класса? А вложенный класс — к элементам объемлющего?
Ответ как бы знаю(нет , да). но наверное я что-то не так понимаю, т.к. примерчик написать не...

Ошибка создания activity в мастере
Всем привет. Вторые сутки бьюсь над проблемой: при создании нового проекта в eclipse вываливается...

Доступ к Notification из Activity
доброго времени всем. нужна ваша помощь коллеги. вот такая задачка, есть некий отдельно работающий...

6
Hank
66 / 56 / 6
Регистрация: 28.12.2011
Сообщений: 320
09.03.2017, 10:52 2
Цитата Сообщение от androman Посмотреть сообщение
Мне нужно поставить этот textView в определенное место в зависимости от размера экрана.
Ну так сделайте для разных экранов разные файлы layout и андроид все сделает за вас - возьмет нужный файл.

Цитата Сообщение от androman Посмотреть сообщение
Но, он там возвращает 0
В onCreate любая характеристика view будет 0.
0
vxg
Модератор
3306 / 2098 / 332
Регистрация: 13.01.2012
Сообщений: 8,152
09.03.2017, 11:04 3
androman, как костыль - в onCreate сделать
Java
1
2
3
4
5
6
        что_то.postDelayed(new Runnable() {
            @Override
            public void run() {
                //делаем дело
            }
        }, 500);
0
androman
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 29
09.03.2017, 13:57  [ТС] 4
Спасибо за ответы. Оказывается все намного проще - можно вместо onCreate использовать onStart или onResume. Т.е. код вписать именно в onStart или onResume.
А Вы про это знали? ))
0
Hank
66 / 56 / 6
Регистрация: 28.12.2011
Сообщений: 320
09.03.2017, 14:19 5
Java
1
А Вы про это знали? ))
Знали. Только это г*внокод.
Вы сами то представляете для чего нужны эти два метода?
0
Pablito
2867 / 2279 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
09.03.2017, 15:34 6
если действительно нужно сдвигать элементы внутри какого-то лаяута ручками и резиновая разметка не подходит то проще всего так
кусок кода из onCreate активити
Java
1
2
3
4
5
6
7
8
9
        final Button button = (Button) findViewById(R.id.btn);
        final FrameLayout layout = (FrameLayout) findViewById(R.id.rootLayout);
        layout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) button.getLayoutParams();
                lp.topMargin = (bottom - top) / 10;
            }
        });
layout - это лаяут, в котором болтается наша кнопка
в примере показано, что как только меняется размер лаяута, в котором находится кнопка - ей пересчитывается верхний отступ так, что бы она всегда была 10% от верхнего края лаяута

задавать вьюшкам и кнопкам setTop - плохо, поставь курсор на этот метод и нажми Ctrl+Q и прочитай что там написано
для ленивых и прочих
Added in API level 11
void setTop (int top)
Sets the top position of this view relative to its parent. This method is meant to be called by the layout system and should not generally be called otherwise, because the property may be changed at any time by the layout.
2
androman
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 29
09.03.2017, 18:01  [ТС] 7
Мне изначально нужно было прочитать textView5.getTop и textView5.getBottom при onStart и onResume.
Оказывается я ошибался - даже на onStart и onResume getTop и getBottom не срабатывает - возвращает нули ((
0
09.03.2017, 18:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2017, 18:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Доступ к БД из другого Activity.
Очередной нубский вопрос. В главном активити есть dbHelper. Все хорошо. Хочу в одном активити...

Время создания статьи при модификации даты создания…
При модификации даты создания материалов, время создания устанавливается в 0 часов 0 минут. А с ...

В классе не Activity доступ к Resources
У меня есть класс Joke, который не является activity. В MainActivity создаю экземпляр класса Joke...

Время нахождения пользователя в данной Activity
Здравствуйте! Возникла такая задача: нужно замерить время, в течение которого пользователь...


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

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

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