С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
phpk
26 / 26 / 6
Регистрация: 15.05.2013
Сообщений: 1,082
#1

Слушатель для события касания по тексту - Программирование Android

02.04.2014, 20:55. Просмотров 1129. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Слушатель для события касания по тексту (Программирование Android):

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

Обработка касания touch - Программирование Android
Всем привет, я пытаюсь оброботать на картинке нажатие на найденный предмет по координатом через метод onTouch(View v, MotionEvent...

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

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

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

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

8
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
02.04.2014, 21:17 #2
Цитата Сообщение от phpk Посмотреть сообщение
надо получать координаты касания экрана и вычислять
Конечно! Немного глючно будет... особенно при длинных строках и перенос строк. Могут быть нюансы с размером строк и настройками TextView.
А правильнее всего сделать ListView. Там обработчик на строки уже встроен!
1
phpk
26 / 26 / 6
Регистрация: 15.05.2013
Сообщений: 1,082
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 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
03.04.2014, 21:35 #4
а зачем такие сложности? Список красивее и удобнее! Если очень хочется, убираете (немного разобраться) изменение цвета строки на нажатие и тогда выглядит как обычный текст!
http://developer.alexanderklimov.ru/android/views/listview.php
1
phpk
26 / 26 / 6
Регистрация: 15.05.2013
Сообщений: 1,082
03.04.2014, 22:45  [ТС] #5
Цитата Сообщение от Tester64 Посмотреть сообщение
Если очень хочется, убираете (немного разобраться) изменение цвета строки на нажатие и тогда выглядит как обычный текст!
а можно подробней?
Возможно вы и правы, лучше ListView, просто хотелось бы узнать, как в такой ситуации обрабатывать касание и выбор текста в TextView?
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.04.2014, 13:33 #6
Цитата Сообщение от phpk Посмотреть сообщение
можно подробней?
А что подробнее? Для начала повторите уроки! Клик по строкам там обьяснен! Подобное есть и в примерах от гугла.
0
phpk
26 / 26 / 6
Регистрация: 15.05.2013
Сообщений: 1,082
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
26 / 26 / 6
Регистрация: 15.05.2013
Сообщений: 1,082
07.04.2014, 21:06  [ТС] #8
кто-то подскажет?
0
Tester64
396 / 357 / 43
Регистрация: 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
Привет! Вот еще темы с ответами:

Узнать, запущен ли слушатель - Программирование Android
Можно ли определить, запущен ли слушатель? Т.е. было ли выполнено addListener...()

AS 3.0 Слушатель события по слушателю события - ActionScript
Уважаемые, как правильнее написать чтобы событие происходило ENTER_FRAME, но только после Mouse.CLICK. Пробовал написать примерно так:...

Сменить слушатель события кнопки при нажатии - Java
Есть кнопка &lt;Button mnemonicParsing=&quot;false&quot; styleClass=&quot;blue_button&quot; text=&quot;Подключить&quot; onAction=&quot;#btnConnect&quot;...

Слушатель события check/uncheck CheckBox в DataGrid - C# WPF
Привет, форумчанам! Нужна ваша помощь. Пишу программу, придерживаясь MVVM. Есть DataGrid, привязанный к коллекции компонентов: ...


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

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

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