Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
phpk
27 / 31 / 13
Регистрация: 15.05.2013
Сообщений: 1,172
1

Слушатель для события касания по тексту

02.04.2014, 20:55. Просмотров 1233. Ответов 8
Метки нет (Все метки)

Подскажите пожалуйста как создать обработчик события касания по разному тексту?
Допустим есть StringBuilder str
str заполнен с помощью str.append() названиями папок sd карты.
Потом всё записываю в String с помощью String s=str.toString(); и вывожу на экран название папки с новой строки с помощью TextView. Как сделать обработчик для каждой папки отдельно?
Наверно надо создать что-то наподобии ключей map, и каждой строке с названием папки создавать новый слушатель OnTouchListener.
Или подскажите, как надо правильно обрабатывать строки на экране, если не использовать ListView и ListActivity?

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

Обработка касания touch
Всем привет, я пытаюсь оброботать на картинке нажатие на найденный предмет по...

Touch – обработка касания
Задача - чтобы после прикосновения уменьшался шрифт до тех пор пока не будет...

Обработка касания(провести пальцем)
Нужно реализовать следующее: например, веду пальцем по линии, и при достижении...

Проверка касания экрана в любом месте
Здравствуйте! Вопрос такой, как можно реализовать проверку условия касания...

Как создать обработчик касания в игре?
Ниже приведён код игры PingPong, вверху ракетка противника(ИИ), а внизу ракетка...

8
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
02.04.2014, 21:17 2
Цитата Сообщение от phpk Посмотреть сообщение
надо получать координаты касания экрана и вычислять
Конечно! Немного глючно будет... особенно при длинных строках и перенос строк. Могут быть нюансы с размером строк и настройками TextView.
А правильнее всего сделать ListView. Там обработчик на строки уже встроен!
1
phpk
27 / 31 / 13
Регистрация: 15.05.2013
Сообщений: 1,172
03.04.2014, 19:57  [ТС] 3
Вот есть допустим код, только без xml интерфейса.
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.mycompany.files;
 
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.util.Log;
import android.app.*;
import android.os.*;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.*;
import android.view.MotionEvent;
import android.view.View.OnTouchListener;
import android.view.View.OnClickListener;
import android.widget.*;
import java.io.*;
import android.view.Window;
import android.view.WindowManager;
import java.util.*;
 
public class MainActivity extends Activity 
implements OnTouchListener, OnClickListener
{
    LinearLayout ly;
    TextView txt;
    File f;
    float x,y,xtxt,ytxt;
    String s;
    ScrollView scrl;
    StringBuilder str=new StringBuilder();
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        ly=new LinearLayout(this);
        ly.setOrientation(1);
        txt=new TextView(this);
        scrl=new ScrollView(this);
        scrl.addView(txt);
        ly.addView(scrl);
        setContentView(ly);
        files("sdcard/");
    }
 
    @Override
    public void onClick(View v)
    {
        
    }
 
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        x=event.getX();
        y=event.getY();
        
        return true;
    }
    
    void files(String path){
        f=new File(path);
 
        for (String file: f.list())
        {
            str.append(file+"\n");
        }
        
        s = str.toString();
        txt.setText(s);
    }
}
Тут есть скрол-прокрутка. На экран выводятся папки, каждая с новой строки, и скролом можно прокручивать. Как в этом случае вычислять координаты текста в точке касания экрана подскажите пожалуйста?
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
03.04.2014, 21:35 4
а зачем такие сложности? Список красивее и удобнее! Если очень хочется, убираете (немного разобраться) изменение цвета строки на нажатие и тогда выглядит как обычный текст!
http://developer.alexanderklimov.ru/android/views/listview.php
1
phpk
27 / 31 / 13
Регистрация: 15.05.2013
Сообщений: 1,172
03.04.2014, 22:45  [ТС] 5
Цитата Сообщение от Tester64 Посмотреть сообщение
Если очень хочется, убираете (немного разобраться) изменение цвета строки на нажатие и тогда выглядит как обычный текст!
а можно подробней?
Возможно вы и правы, лучше ListView, просто хотелось бы узнать, как в такой ситуации обрабатывать касание и выбор текста в TextView?
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
04.04.2014, 13:33 6
Цитата Сообщение от phpk Посмотреть сообщение
можно подробней?
А что подробнее? Для начала повторите уроки! Клик по строкам там обьяснен! Подобное есть и в примерах от гугла.
0
phpk
27 / 31 / 13
Регистрация: 15.05.2013
Сообщений: 1,172
06.04.2014, 20:53  [ТС] 7
а так получится определить координаты текста?
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
public class MainActivity extends Activity 
implements OnTouchListener, OnClickListener
{
    LinearLayout ly;
    TextView[] txt;       //создаётся массив из TextView  !!!
    File f;
    float x,y,xtxt,ytxt;
    String s;
    ScrollView scrl;
    StringBuilder str=new StringBuilder();
    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        ly=new LinearLayout(this);
        ly.setOrientation(1);
 
        scrl=new ScrollView(this);
 
        ly.addView(scrl);
        setContentView(ly);
        files("sdcard/");
    }
 
    @Override
    public void onClick(View v)
    {
        
    }
 
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        x=event.getX();
        y=event.getY();
        
        return true;
    }
    
    void files(String path){
        f=new File(path);
        String[] mas = f.list();
        for (int z=0; z < mas.length; z++)
        {
            str.append(mas[z]+"\n");
            txt[z] = new TextView(this);
            txt[z].setText(mas[z]);
            scrl.addView(txt[z]);             //       !!!
        }
        
        s = str.toString();
    }
}
т.е. для каждой папки создаётся новый TextView чтобы можно было обратиться к координатам текста, к примеру:
txt[z].getX();

Добавлено через 3 часа 24 минуты
массив из TextView вобще используют?
Или так нельзя делать?
0
phpk
27 / 31 / 13
Регистрация: 15.05.2013
Сообщений: 1,172
07.04.2014, 21:06  [ТС] 8
кто-то подскажет?
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
08.04.2014, 01:28 9
Вы плохо задали вопрос! Я так и не понял что Вам от строк нужно! Еще и Х??? Каждую букву ловите?
Разберитесь с адаптером. Создайте свой для хранения и вывода строк. Обработайте клик на строках. В том ученбике что я дал ссылкой большинство этого есть! Зачем мне нужен Ваш код метода заполнения строк из имен файлов если у Вас проблемы только с выводом и обработкой клика по строкам?
Судя по Вашей активности на сайте, Вы в андроиде новичок! Пройдите сначала ВСЕ уроки по работе со списком... Это учебный курс (минимум) на несколько дней...

Добавлено через 5 минут
Цитата Сообщение от phpk Посмотреть сообщение
массив из TextView вобще используют?
Или так нельзя делать?
Используют! Можно! Но обычно не для подобных целей. В нем удобно хранить текст большой длины (больше 2-3х строк) и не заботится о переносах строк. Например если нужен справочник с описанием... Или вывести тестовый лог пользователю...
1
08.04.2014, 01:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2014, 01:28

Эмуляция касания и движения пальца по экрану
Здравствуйте, подскажите пожалуйста на примере, как сделать такую эмуляцию -...

Узнать, запущен ли слушатель
Можно ли определить, запущен ли слушатель? Т.е. было ли выполнено...

GPS. Слушатель LocationListener
Изменения текущего местоположения сохраняю в файл, сохраняя время и координаты....


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

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

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