0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 59

OnClickListener не срабатывает пояления imageView

20.03.2016, 15:31. Показов 973. Ответов 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();
 
            }
 
        });
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.03.2016, 15:31
Ответы с готовыми решениями:

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

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

Не работает onclicklistener
Задача вроде бы до ужаса простая, мне нужно просто при нажатии перейти на другой активити и всёёё Я уже три часа сижу и ничего не...

5
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
20.03.2016, 15:36
чему равно appDencity и где оно инициализируется?
0
 Аватар для OlegJV
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
20.03.2016, 19:04
Чета мне кажется, что они где-то за пределами экрана выскакивают

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

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

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 как инициализировать.
за ранее спасибо.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
21.03.2016, 11:01
можно сделать кошернее
1. в файле dnimens.xml пишем строку, например
XML
1
<dimen name="my_number">100dp</dimen>
2. в коде, где надо узнать чему 100dp равно в пикселях, пишем
Java
1
int offset = getResources().getDimensionPixelSize(R.dimen.my_number);
и ничего ненадо умножать и не нужны dencity экрана
1
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 59
21.03.2016, 22:27  [ТС]
Паблито, спасибо.

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

Вариант 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 исчезает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.03.2016, 22:27
Помогаю со студенческими работами здесь

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

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

ListView onClickListener
Всем привет ! Реализую редактирование записи, не могу обратится к элементу массива, приложение крашится. Есть ListView куда я считываю...

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

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


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

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

Новые блоги и статьи
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru