Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297

Программное создание экрана

24.11.2013, 12:26. Показов 2557. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго дня!
Коллеги. Так получилось что в программе приходится рисовать все экраны программно.
Столкнулся со следующей проблемой:
на эеране создаю TabkeLayout и несколько TableRow
В TableRow помещаю ImageView, но у него (ImageView) по умалчанию выставляется параметр "на всего родителя" =)
Каким образом поменять параметр у ImageView, чтобы он не занимал более того, что требует рисунок?

Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.11.2013, 12:26
Ответы с готовыми решениями:

Программное нажатие на области экрана
Добрый день! Прошу помощи. Делаю свое приложение, есть несколько кнопок и webview с подгружаемой страницей. Надо в webview проверить...

Программное создание интерфейса
Вобщем мне нужно создавать програмным способом интерфейс приложения. Обьекты будут создаватся динамически, поэтому через xml разметку не...

Программное создание layout
Впервые приходится создавать экран полностью через класс. Не могу понять, как должны привязываться компоненты: снизу вверх или сверху вниз?...

12
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
24.11.2013, 13:51
Java
1
setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
0
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
24.11.2013, 13:55  [ТС]
Цитата Сообщение от NiRamz Посмотреть сообщение
Java
1
setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
WRAP_CONTENT - ругается нанего =(
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.11.2013, 18:03
LayoutParams.WRAP_CONTENT
0
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
24.11.2013, 19:36  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
LayoutParams.WRAP_CONTENT
Получается вот так
Java
1
2
3
ImageView back = new ImageView(this);
        back.setImageResource(R.drawable.back);
        back.setLayoutParams(LayoutParams.WRAP_CONTENT);
Ругается на LayoutParams, делаю import android.widget.LinearLayout.LayoutParams ;
Начинает ругаться на setLayoutParams - The method setLayoutParams(ViewGroup.LayoutParams) in the type View is not applicable for the arguments (int)

Что значит - не знаю

Добавлено через 1 час 3 минуты
Цитата Сообщение от NOSC Посмотреть сообщение
Получается вот так
Java
1
2
3
ImageView back = new ImageView(this);
        back.setImageResource(R.drawable.back);
        back.setLayoutParams(LayoutParams.WRAP_CONTENT);
Ругается на LayoutParams, делаю import android.widget.LinearLayout.LayoutParams ;
Начинает ругаться на setLayoutParams - The method setLayoutParams(ViewGroup.LayoutParams) in the type View is not applicable for the arguments (int)

Что значит - не знаю
Сделал вот так:
Java
1
2
3
4
5
6
7
final ImageView back = new ImageView(this);
        back.setImageResource(R.drawable.back);
        ViewGroup.LayoutParams wc = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
            );
        back.setLayoutParams(wc);
Но моя ImageView back просто исчезла с экрана и tablerow потерял "ширину"
попытался сделать:
Java
1
back.setGravity(LEFT);
Но Eclips руганулся что нельзя setGravity делать к ImageView

Что не так?
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
25.11.2013, 23:01
Цитата Сообщение от NOSC Посмотреть сообщение
back.setGravity(LEFT);
Java
1
back.setGravity(LEFT);
Например
Java
1
back.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
1
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
26.11.2013, 07:53  [ТС]
Цитата Сообщение от Digetix Посмотреть сообщение
Например
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
back.setScaleType(ImageView.ScaleType.CE NTER_INSIDE);
Да, спасибо, кнопочка теперь сместилась туда куда нужно, но OnClickListener на ней воспринимается за ее пределами в том числе =)
Из-за чего такое может быть??

Спасибо
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
26.11.2013, 15:45
Цитата Сообщение от NOSC Посмотреть сообщение
но OnClickListener на ней воспринимается за ее пределами в том числе
А картинка без пустых (прозрачных) мест?
0
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
26.11.2013, 20:08  [ТС]
Цитата Сообщение от Digetix Посмотреть сообщение
А картинка без пустых (прозрачных) мест?
Есть прозрачные места, но картинка в них вписана и они не занимают столько места на самом деле.
Там обычная кнопка "назад" на прозрачном фоне
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
27.11.2013, 02:21
onclicklistener вешается на ImageView, а не на видимую часть изображения. И если у вас будет картинка с пустыми участками (не видимыми), то на них тоже будет срабатывать событие.

Добавлено через 1 минуту
если вы тестируете на реальном аппарате, тогда посмотрите в настройки-параметры разработчика - показывать ограничения. И вам выделят цветами все отступы, границы и так далее.
0
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
27.11.2013, 06:52  [ТС]
Цитата Сообщение от NiRamz Посмотреть сообщение
onclicklistener вешается на ImageView, а не на видимую часть изображения. И если у вас будет картинка с пустыми участками (не видимыми), то на них тоже будет срабатывать событие.

Добавлено через 1 минуту
если вы тестируете на реальном аппарате, тогда посмотрите в настройки-параметры разработчика - показывать ограничения. И вам выделят цветами все отступы, границы и так далее.
Это я прекрасно понимаю.
Грубо говоря картинка у меня 50х80 пикселей с прозрачным фоном. Я добился того, что видимая часть сместилась в нужный угол экрана, но видимо картинка расягивается на всю ширину Layout в котором она помещена и именно ее прозрачная часть (тестирую все только на реальных устройствах).
Какой параметр за это отвечает и что можно сделать??
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
27.11.2013, 11:40
Цитата Сообщение от NOSC Посмотреть сообщение
но видимо картинка расягивается на всю ширину Layout в котором она помещена
Ну как это "видимо" ? Покажите весь код этого layout'а
0
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
27.11.2013, 11:50  [ТС]
Цитата Сообщение от Digetix Посмотреть сообщение
Ну как это "видимо" ? Покажите весь код этого 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
public class WView extends Activity {
    private static final int VISIBLE = 1;
    public static String s = null;
    public static int d = R.drawable.view;
 
    public Context context;
    RelativeLayout layout;
    TableLayout toptab;
    TableRow toprow;
    TableRow row1;
    TableRow row2;
    TableRow bot;
    ScrollView scroll;
    LinearLayout sclin;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        PreferencesHelper.loadSettings(this);
 
        final Animation anim = AnimationUtils.loadAnimation(this, R.anim.fade_in);
        layout = new RelativeLayout(this);
        layout.setBackgroundResource(d);
        toptab = new TableLayout(this);
        scroll = new ScrollView(this);
        sclin = new LinearLayout(this);
        sclin.setOrientation(LinearLayout.VERTICAL);
        toprow = new TableRow(this);
        row1 = new TableRow(this);
        row2 = new TableRow(this);
        bot = new TableRow(this);
        final ImageView back = new ImageView(this);
        back.setImageResource(R.drawable.back);
        back.setVisibility(VISIBLE);
        
        ImageView lol = new ImageView(this);
        lol.setImageResource(R.drawable.lol);
        WebView my = new WebView(this);
        my.loadUrl(s);
        my.setBackgroundColor(0x00000000);
        
        layout.addView(toptab);
        toptab.addView(toprow);
        toptab.addView(row1);
        toptab.addView(row2);
        toprow.addView(back);
        row1.addView(lol);
        row2.addView(my);
        back.setScaleType(ImageView.ScaleType.FIT_START);
        back.setOnClickListener(new OnClickListener() {          
            public void onClick(View v) {
                // TODO Auto-generated method stub
                back.startAnimation(anim);
                onBackPressed();
            }
        });
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2013, 11:50
Помогаю со студенческими работами здесь

Программное создание TextView
Всем привет! помогите пожалуйста. Как сделать по нажатию на кнопку автоматическое создание нескольких других элементов например TextView...

Программное изменение разрешения экрана
Подскажите, как в федоре 8 поменять разрешение одного/двух мониторов без перезагрузки иксов

CentOS 5.11: Программное управление яркостью экрана моноблока
Добрый день! Имеется моноблок HP ProOne 400 G1 (J8S77EA), в котором установлены процессор Intel Celeron Dual Core G1840T, чипсет видео...

Программное создание БД на с++
Народ подскажите пожалуйста как создать программно mdb файл. Делал так Variant acs =...

Программное создание БД
Приветствую! Исходное положение следующее: планируем использовать в связке с делфи субд MySQL. Есть пару вопросов: 1 - Есть ли...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru