Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
#1

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

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

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

Спасибо.

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2013, 12:26
Ответы с готовыми решениями:

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

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

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

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

Программное создание LinearLayout в RelativeLayout
Фрагмент кода с ошибкой: rellayout = new RelativeLayout(this);...

12
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
24.11.2013, 13:51 #2
Java
1
setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
24.11.2013, 13:55  [ТС] #3
Цитата Сообщение от NiRamz Посмотреть сообщение
Java
1
setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
WRAP_CONTENT - ругается нанего =(
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.11.2013, 18:03 #4
LayoutParams.WRAP_CONTENT
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
24.11.2013, 19:36  [ТС] #5
Цитата Сообщение от 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
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
25.11.2013, 23:01 #6
Цитата Сообщение от NOSC Посмотреть сообщение
back.setGravity(LEFT);
Java
1
back.setGravity(LEFT);
Например
Java
1
back.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
1
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
26.11.2013, 07:53  [ТС] #7
Цитата Сообщение от Digetix Посмотреть сообщение
Например
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
back.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Да, спасибо, кнопочка теперь сместилась туда куда нужно, но OnClickListener на ней воспринимается за ее пределами в том числе =)
Из-за чего такое может быть??

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

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

Добавлено через 1 минуту
если вы тестируете на реальном аппарате, тогда посмотрите в настройки-параметры разработчика - показывать ограничения. И вам выделят цветами все отступы, границы и так далее.
Это я прекрасно понимаю.
Грубо говоря картинка у меня 50х80 пикселей с прозрачным фоном. Я добился того, что видимая часть сместилась в нужный угол экрана, но видимо картинка расягивается на всю ширину Layout в котором она помещена и именно ее прозрачная часть (тестирую все только на реальных устройствах).
Какой параметр за это отвечает и что можно сделать??
0
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 651
27.11.2013, 11:40 #12
Цитата Сообщение от NOSC Посмотреть сообщение
но видимо картинка расягивается на всю ширину Layout в котором она помещена
Ну как это "видимо" ? Покажите весь код этого layout'а
0
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
27.11.2013, 11:50  [ТС] #13
Цитата Сообщение от 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
27.11.2013, 11:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2013, 11:50

Программное создание layout и элементов
Здравствуйте. У меня появилась необходимость создать полноценный layout без...

Программное создание GridLayout и добавление в него объектов
Дисклеймер: Всем доброго дня! Я - новичок в написании программ под Android....

Программное создание обработчика события OnClick для button
Иметься кнопка, которая создается самим пользователем Код создания кнопки:...


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

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

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