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

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

Войти
Регистрация
Восстановить пароль
 
No Bro
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 56
#1

OnClickListener не срабатывает пояления imageView - Программирование Android

20.03.2016, 15:31. Просмотров 329. Ответов 5
Метки нет (Все метки)

добрый день.
подскажите почему не выводит ImageView.
при клике на R.id.img

изначально mark1 и mark2 скрыты при нажатие на img они должны появляться в точках 100на100 и 200на200.
но при клике ничего не происходит, только срабатывает Toast

XML
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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="2500dp"
    android:layout_height="1786dp"
    tools:context=".remont_pgActivity">
 
 
    <RelativeLayout
        android:layout_width="2500dp"
        android:layout_height="1786dp"
        android:gravity="center">
 
        <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/img"
        android:src="@drawable/new_map"/>
 
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/mark1"
            android:src="@drawable/marker"
             />
 
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/mark2"
            android:src="@drawable/marker2"
             />
 
    </RelativeLayout>
 
</RelativeLayout>


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
public class remont_pgActivity extends AppCompatActivity {
 
    ImageView mark1, mark2;
    public int appDensity;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_remont_pg);
 
        mark1 = (ImageView) findViewById(R.id.mark1);
        mark2 = (ImageView) findViewById(R.id.mark2);
 
        mark1.setVisibility(View.GONE);
        mark2.setVisibility(View.GONE);
 
 
        final ImageView imgTep = (ImageView) this.findViewById(R.id.img);
        imgTep.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
 
 
                findViewById(R.id.mark1).setVisibility(View.VISIBLE);
                RelativeLayout.LayoutParams imageParams1 = new RelativeLayout.LayoutParams(mark1.getWidth(), mark1.getHeight());
                imageParams1.leftMargin = (int) v.getX() + 100 * appDensity;
                imageParams1.topMargin = (int) v.getY() + 100 * appDensity;
                mark1.setLayoutParams(imageParams1);
 
 
 
                findViewById(R.id.mark2).setVisibility(View.VISIBLE);
                RelativeLayout.LayoutParams imageParams2 = new RelativeLayout.LayoutParams(mark2.getWidth(), mark2.getHeight());
                imageParams2.leftMargin = (int) v.getX() + 200 * appDensity;
                imageParams2.topMargin = (int) v.getY() + 200 * appDensity;
                mark2.setLayoutParams(imageParams2);
 
                Toast.makeText(getBaseContext(), "********", Toast.LENGTH_SHORT).show();
 
            }
 
        });
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2016, 15:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос OnClickListener не срабатывает пояления imageView (Программирование Android):

Скопировать картинку из одной ImageView в другую ImageView - Программирование Android
В ImageView поставлена картинка методом setImageResource. По нажатию на неё, нужно такую-же картинку поставить в другую вью, а в первой...

OnClickListener - Программирование Android
Хочу сделать обработчик нажатий в одном блоке, но что-то идет не так на OnClick, жалуется что не используется.. Что я делаю не так? ...

Обработчик OnClickListener - Программирование Android
Добрый день, начал изучать интерфейсы и как оказалось в JAVA нельзя создать экземпляр интерфейса. Здесь же OnClickListener oclBtnOk =...

OnClickListener в Андроид - Программирование Android
Всем доброго времени суток!!! Я новичок в программировании Андроид устройств. Я программирую в среде Eclipse с Android SDK tools. Вопрос...

Не отлавливается View.OnClickListener - Программирование Android
Написал следующий код, список появляется с элементами все работает. а вот на карточку внутри списка нажатие не хочет отрабатывать. еще...

Просьба объяснить конструкуцию OnClickListener - Программирование Android
Добрый день, есть конструкция обработки нажатия кнопки, подскажите, правильно ли я понимаю: button.setOnClickListener(new...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Pablito
2473 / 1918 / 595
Регистрация: 12.05.2014
Сообщений: 6,742
Завершенные тесты: 1
20.03.2016, 15:36 #2
чему равно appDencity и где оно инициализируется?
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 472
20.03.2016, 19:04 #3
Чета мне кажется, что они где-то за пределами экрана выскакивают

Добавлено через 1 минуту
Элементарно сделать лог и посмотреть на получившуюся циферку не судьба

Добавлено через 3 минуты
Java
1
2
  int mrg = (int) v.getX() + 200 * appDensity;
    Log.d("TAG", "Margin " + mrg);
No Bro
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 56
21.03.2016, 07:21  [ТС] #4
как то так. точно не знаю как сделать.

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
public class remont_pgActivity extends AppCompatActivity {
 
    int bitmapWidth = 2500;
    int bitmapHeight = 1786;
 
    ImageView mark1, mark2;
    public int appDensity;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_remont_pg);
 
 
        bitmapWidth = bitmapWidth * appDensity;
        bitmapHeight = bitmapHeight * appDensity;
 
        mark1 = (ImageView) findViewById(R.id.mark1);
        mark2 = (ImageView) findViewById(R.id.mark2);
 
        mark1.setVisibility(View.GONE);
        mark2.setVisibility(View.GONE);
 
 
        final ImageView imgTep = (ImageView) this.findViewById(R.id.img);
        imgTep.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
 
 
 
                findViewById(R.id.mark1).setVisibility(View.VISIBLE);
                RelativeLayout.LayoutParams imageParams1 = new RelativeLayout.LayoutParams(mark1.getWidth(), mark1.getHeight());
                imageParams1.leftMargin = (int) v.getX() + 100 * appDensity;
                imageParams1.topMargin = (int) v.getY() + 100 * appDensity;
                mark1.setLayoutParams(imageParams1);
 
 
                findViewById(R.id.mark2).setVisibility(View.VISIBLE);
                RelativeLayout.LayoutParams imageParams2 = new RelativeLayout.LayoutParams(mark2.getWidth(), mark2.getHeight());
                imageParams2.leftMargin = (int) v.getX() + 200 * appDensity;
                imageParams2.topMargin = (int) v.getY() + 200 * appDensity;
                mark2.setLayoutParams(imageParams2);
 
                Toast.makeText(getBaseContext(), "********", Toast.LENGTH_SHORT).show();
 
            }
 
        });
    }
Добавлено через 10 часов 51 минуту
скиньте документацию про appDensity как инициализировать.
за ранее спасибо.
Pablito
2473 / 1918 / 595
Регистрация: 12.05.2014
Сообщений: 6,742
Завершенные тесты: 1
21.03.2016, 11:01 #5
можно сделать кошернее
1. в файле dnimens.xml пишем строку, например
XML
1
<dimen name="my_number">100dp</dimen>
2. в коде, где надо узнать чему 100dp равно в пикселях, пишем
Java
1
int offset = getResources().getDimensionPixelSize(R.dimen.my_number);
и ничего ненадо умножать и не нужны dencity экрана
No Bro
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 56
21.03.2016, 22:27  [ТС] #6
Паблито, спасибо.

в общем после танцем с бубном.

Вариант 1. тут все работает как надо. но дело в том что img это изображение на весь размер слоя и с ним манипуляций никаких не планируется. при клике на img. mark1 . mark2 появляются там где надо.
Java
1
2
3
4
5
6
7
8
9
10
11
12
 final ImageView img = (ImageView) this.findViewById(R.id.img);
        img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                findViewById(R.id.mark1).setVisibility(View.VISIBLE);
                mark1.setX(v.getX() + 95);
                mark1.setY(v.getY() + 91);
 
                findViewById(R.id.mark2).setVisibility(View.VISIBLE);
                mark2.setX(v.getX() + 95);
                mark2.setY(v.getY() + 267);
вариант 2. а вот если поставить на Button то mark1 . mark2 выводятся не там где надо, не в тех X-Y которые заданы.


Java
1
2
3
4
5
// ставим кнопку по x-y
 findViewById(R.id.button12).setVisibility(View.VISIBLE);
        button12 = (Button) findViewById(R.id.button12);
        button12.setX(button12.getX() + 941);
        button12.setY(button12.getY() + 821);
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
//вывод mark1 mark 2
final Button btn11 = (Button) this.findViewById(R.id.button11);
        btn11.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                findViewById(R.id.mark1).setVisibility(View.VISIBLE);
                mark1.setX(v.getX() + 95);
                mark1.setY(v.getY() + 91);
 
                findViewById(R.id.mark2).setVisibility(View.VISIBLE);
                mark2.setX(v.getX() + 95);
                mark2.setY(v.getY() + 267);

И интересует как можно заместо Button11, вставить вывод mark1 mark2 в menu
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
 
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
 
        switch (item.getItemId()) {
            case R.id.action_settings:
                break;
            case R.id.action_refresh:
                Toast.makeText(remont_pgActivity.this, "Красный", Toast.LENGTH_LONG).show();
                break;
            case  R.id.action_new:
                Toast.makeText(remont_pgActivity.this, "Красный", Toast.LENGTH_LONG).show();
                break;
        }
 
        return super.onOptionsItemSelected(item);
    }
Добавлено через 23 минуты
сделал так вроде работает.
Java
1
2
3
4
5
switch (item.getItemId()) {
            case R.id.action_settings:
                mark1.setX(mark1.getX() + 95);
                mark1.setY(mark1.getY() + 91);
                break;
но все же интересно как реализовать через Button.

Добавлено через 8 минут
Цитата Сообщение от No Bro Посмотреть сообщение
сделал так вроде работает.

Java
1
2
3
4
5
switch (item.getItemId()) {
 case R.id.action_settings:
 mark1.setX(mark1.getX() + 95);
 mark1.setY(mark1.getY() + 91);
 break;
при повторном использование action_settings, mark1 исчезает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2016, 22:27
Привет! Вот еще темы с ответами:

Как добавить OnClickListener в toast? - Программирование Android
Хочу сделать так чтоб мои Toast сообщения реагировали на клик. Попробовал так: Toast toast = new Toast(MyActivity.this); TextView...

Spinner и OnClickListener как использовать? - Программирование Android
Появилась ошибка - error: local variable spinner is accessed from within inner class; needs to be declared final Если String select;...

OnClickListener не может вызвать метод с MainActivity - Программирование Android
В MainActivity в onClickListener я могу вызвать метод selectCardFromList: public class MainActivity extends AppCompatActivity { ...

Ошибка при использовании класса реализующего OnClickListener - Программирование Android
Добрый день. Создал свой листенер: public class SaveHistoryBtnListener implements View.OnClickListener { private DataBase...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.03.2016, 22:27
Ответ Создать тему
Опции темы

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