2015-02-10 2 views
2

У меня есть пять текстовых представлений, и все они доступны для кликов, как дать им визуальный эффект, чтобы пользователь мог идентифицировать его. Я уже отказался от идеи подчеркнуть текстовое представление, так есть ли другой доступный способ.Как показать текстовое изображение можно щелкнуть?

Мой код

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:color="#94FFFF" /> <!-- pressed --> 

    <item android:state_focused="true" 
      android:color="#94FFFF" /> <!-- focused --> 
    <item android:color="#5C9E70" /> <!-- default --> 
</selector> 
+2

Какой визуальный эффект вы хотели бы иметь? – Blackbelt

+0

Я точно не знаю, но может быть какой-то тиснение ... или что-нибудь еще, что вы можете предложить –

+1

Вы настраиваете его на клик в коде? –

ответ

3

Моим любимым является нарисовать круг вокруг TextView и на самом деле сделать его кнопкой, которая содержит элементы стиля TextView;

<Button 
    android:id="@+id/quit" 
    style="@android:style/Widget.TextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:text="Your Text" 
    android:paddingBottom="8dp" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:paddingTop="8dp" 
    android:minHeight="0dp" 
    android:minWidth="0dp" 
    android:textColor="#ffffff" 
    android:background="@drawable/but_bg" /> 

где but_bg является .xml, содержащий

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape> 
     <gradient 
      android:type="radial" android:gradientRadius="820" 
      android:startColor="#df242424" 
      android:centerColor="#df343434" 
      android:endColor="#da444444" 
      android:angle="270" /> 
     <stroke 
      android:width="1dp" 
      android:color="#ffffff" /> 
     <corners 
      android:radius="7dp" /> 
     <padding 
      android:left="8dp" 
      android:top="8dp" 
      android:right="8dp" 
      android:bottom="8dp" /> 
     </shape> 
     </item> 
</selector> 

Использование радиальных цветов в там вы можете также сделать его более пластичным. Это выглядит так: button

Вы также можете применить xml, пригодный для рисования, в случае, если вы хотите сохранить TextView. Тогда вы просто обернуть это так:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/but_bg" 
[...]> 
    <TextView 
     [...] /> 
</LinearLayout> 

EDIT: Я просто понял, что Button в основном это TextView подкласс с другим стилем. Я не тестировал это с помощью тегов TextView, но он должен работать таким же образом, если кто-то хочет сохранить его TextView.

+0

, если я хочу нарисовать круг вокруг этого текста и i не хочу, чтобы он был кнопкой ... есть ли какой-нибудь способ? –

+0

Я отредактировал. Pls как ответ, если он вам помог – user2875404

1

Вы можете использовать StateListDrawable. Просто создайте xml-файл с selector в качестве корневого тега и назначьте его как textColor или backgroundColor на ваш TextView в зависимости от поведения, которое вы хотите.

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_activated="true" 
     android:state_pressed="true" 
     android:drawable="@drawable/pressed_img" /> 
    <item 
     android:state_activated="true" 
     android:drawable="@drawable/pressed_img" /> 
    <item 
     android:drawable="@drawable/normal_img" /> 
</selector> 

Также вы должны сделать YOUT TextView кликабельным, установив атрибут android:clickable в true.

+0

Пожалуйста, проверьте редактирование .... –

Смежные вопросы