912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
|
1 | |
TextView закрасить уголок06.02.2015, 10:38. Показов 1512. Ответов 15
Метки нет (Все метки)
Очень часто делаю списки ListView и приходится для визуального отображения одной строки как-то помечать ее (напр. любимая команда в списке команд КХЛ).
Раньше делал так: в разметке в углу создавал невидимый ImageView, а в адаптере делал ему Vizible. А как мне программно нарисовать или закрасить левый верхний уголок в TextView? Если менять background, то как размерность определять его? Или как-то рисовать можно?
0
|
06.02.2015, 10:38 | |
Ответы с готовыми решениями:
15
Текст из TextView перенести в другой TextView по нажатию Button TextView txt = new TextView(this); - ошибка Уголок Декоративный уголок |
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
|
|
06.02.2015, 11:14 | 2 |
Можно в 9-patch нарисовать бекграунд с отметкой в нужном месте и чтоб растягивался по всякому, но отметка была всегда в одном месте.
Прикрепил пример
1
|
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
|
06.02.2015, 11:18 [ТС] | 3 |
Gabberr, что за клякса?) А примера нет, я гуглил ничего не нашел?
0
|
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
|
|
06.02.2015, 11:21 | 4 |
Ну вот эту кляксу если вставить в background элементу textview, то она всегда будет в верхнем правом углу, вне зависимости от размера textview
Про ninepatch http://habrahabr.ru/post/113623/
1
|
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
|
06.02.2015, 11:27 [ТС] | 5 |
Gabberr, хорошо, будем изучать. Сейчас пока гуглю про canvas, может получится нарисовать для общего развития.
0
|
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
|
||||||
06.02.2015, 11:56 | 6 | |||||
Сообщение было отмечено Rube как решение
Решение
Работу работать совсем лень, вот наваял примерчик с кастомным TextView, где на канвасе рисуется треугольник в левом верхнем углу
Кликните здесь для просмотра всего текста
2
|
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
|
06.02.2015, 13:32 [ТС] | 7 |
Огромный спс за примерчик, сижу разбираюсь, ибо тяпница. Итак, значит Point это точки с координатами по которым рисовать линии, p1 - первая точка, width - длина линии.
Для треугольника в правом верхнем углу я должен определить p1 = getWidth() и дальше пошел по точкам рисунок рисовать, правильно?
0
|
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
|
||||||
06.02.2015, 14:00 | 8 | |||||
Сообщение было отмечено Rube как решение
Решение
Да всё верно, только в текущей реализации getWidth будет возвращать всегда 0, т.к размер ещё не определён.
Нужно немного подправить
2
|
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
|
06.02.2015, 14:54 [ТС] | 9 |
Вот теперь все получилось, в getTriangle() отправляю integer из ресурсов, дабы треугольник под все экраны подходил.
0
|
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
||||||||||||||||
09.02.2015, 15:24 [ТС] | 10 | |||||||||||||||
Застрял с отображением этого треугольника в листвью.
Сделал поле boolean myT в MyTextView. При формировании адаптера (SimpleCursorAdapter) в переопределенном методе bindView() вызываю метод класса MyTextView
Кажется мне надо чисто кастомный адаптер делать вместо переопределения и там поле делать, или как-то еще? Добавлено через 33 минуты Чего-то и кастомным адаптером не вышло, какое поле то делать и зачем... менять то надо в самом MyTextView.
0
|
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
|
|||||||||||
09.02.2015, 15:30 | 11 | ||||||||||
Просто добавьте invalidate
Либо явный вызов:
0
|
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
|||||||||||
09.02.2015, 16:19 [ТС] | 12 | ||||||||||
Gabberr, нивкакую не хочет
Вызываю в адаптере явно или по курсору = 2
Вот такой лог Кликните здесь для просмотра всего текста
getmyT false
getmyT false setmyT true getmyT false getmyT false setmyT true getmyT false getmyT false setmyT true
0
|
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
|
|||||||||||||||||||||
09.02.2015, 16:50 | 13 | ||||||||||||||||||||
Грешу на bindView, можете показать весь код этого метода?
проверил на списке с arrayadapter'ом работат как надо адаптер Кликните здесь для просмотра всего текста
onCreate Кликните здесь для просмотра всего текста
Добавлено через 5 минут аа так у вас в другом походу проблема, метод init вызывается один раз при создании объекта. Нужно либо вынести в отдельный метод это
1
|
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
||||||||||||||||
10.02.2015, 12:41 [ТС] | 14 | |||||||||||||||
Чот никак не получается, я даже вынес в адаптер, но так вообще не срабатывает
Добавлено через 15 часов 55 минут Наконец-то получилось, спасибо, надо было только и всего, что вынести trianglePaint.setColor в onDraw.
0
|
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
|
||||||
10.02.2015, 12:53 | 15 | |||||
неиспользуемые поля можно выкинуть.
Немного не верно с точки зрения использования ресурсов всегда рисовать в onDraw, у вас если рисовать не нужно, то рисуется прозрачно, а лучше совсем не рисовать Вот мой итоговый вариант Кликните здесь для просмотра всего текста
1
|
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
|
|
10.02.2015, 14:08 [ТС] | 16 |
0
|
10.02.2015, 14:08 | |
10.02.2015, 14:08 | |
Помогаю со студенческими работами здесь
16
закруглённый уголок Прозрачный уголок у блока Цветной уголок в таблице Сверстать уголок под 45 градусов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |