Android EditText собственный селектор - PullRequest
2 голосов
/ 29 августа 2011

Я пытаюсь применить свой собственный дизайн к тексту редактирования и использовать собственный селектор Android, когда мой текст редактирования активирован, сфокусирован и т. Д. Проблема в том, что каждый раз, когда я касаюсь текста редактирования и работает собственный селектор, мой текст редактирования становится меньше.Может кто-нибудь предложить, пожалуйста, почему это происходит? Вот мой фрагмент кода:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_window_focused="false" android:state_enabled="true"
    android:drawable="@android:drawable/edit_text"/>
<item 
    android:state_window_focused="false" android:state_enabled="false"
    android:drawable="@android:drawable/edit_text"/>
<item 
    android:state_pressed="true" 
    android:drawable="@android:drawable/edit_text"/>
<item 
    android:state_enabled="true" android:state_focused="true" 
    android:drawable="@android:drawable/edit_text"/>
<item 
    android:state_enabled="true" 
    android:drawable="@android:drawable/edit_text"/>
<item 
    android:state_focused="true" 
    android:drawable="@android:drawable/edit_text"/>
<item 
    android:drawable="@drawable/my_border" />
</selector>

И здесь я использую мой селектор:

 <EditText 
        android:layout_height="37dip" 
        android:layout_width="fill_parent"
        android:layout_marginLeft="7dip"
        android:layout_marginRight="7dip"
        android:background="@layout/selector_input"
        android:paddingLeft="5dip"
        android:paddingRight="5dip"
        android:inputType="textEmailAddress">
    </EditText>

Это код my_border:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/white"/>
    <stroke android:width="1dip" android:color="@color/border_green"/>
    <corners android:radius="4dp" /> 
    <padding android:left="1dip" android:top="1dip" android:right="1dip" android:bottom="1dip" />
</shape>

PS С кнопками тоже самое происходит.

Ответы [ 4 ]

8 голосов
/ 14 июня 2012

сначала, большое спасибо за ваш пост, мне очень помогло, но ваш код выше (пример для селектора) не работал для меня:

, поэтому я адаптировал его для других, так что если кто-то ищет как пометить текстовое поле как выбранное :

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/bottom_line_normal"/>
<item 
android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/bottom_line_normal"/>
<item 
android:state_pressed="true" 
android:drawable="@drawable/bottom_line_focus"/>
<item 
android:state_enabled="true" android:state_focused="true" 
android:drawable="@drawable/bottom_line_focus"/>
<item 
android:state_enabled="true" 
android:drawable="@drawable/bottom_line_normal"/>
<item 
android:state_focused="true" 
android:drawable="@drawable/bottom_line_focus"/>
<item 
android:drawable="@drawable/bottom_line_normal"/>
</selector>

повеселиться: =) удачи:)

1 голос
/ 31 августа 2011

Поскольку никто не смог полностью ответить на мой вопрос, я отвечу на него сам. Проблема заключалась в том, что мой текст редактирования становился все меньше с каждым прикосновением. Это происходит из-за того, что в Android-фоновом изображении есть прозрачная область вокруг. Поэтому я использовал список слоев, чтобы создать свой фон с прозрачной областью вокруг него. Вот код:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/transparent_background"
        android:top="5dip"
        android:right="5dip"
        android:bottom="5dip"
        android:left="5dip" />
    <item
        android:drawable="@drawable/my_border"
        android:top="0dip"
        android:right="0dip"
        android:bottom="0dip"
        android:left="0dip" />
</layer-list>

В моем селекторе вместо my_border я использую этот xml. Вот и все. Легко сделать и чертовски трудно узнать, как!

0 голосов
/ 30 августа 2011

Хорошо, после того, как я попробовал эти файлы, EditText не использует ваш селектор, когда он не включен и отображается со своим стандартным макетом ... поэтому добавление

<item android:state_enabled="false" android:drawable="@android:drawable/edit_text"/> к вашему селектору должно быть решение

0 голосов
/ 29 августа 2011
<item 
android:drawable="@drawablemy_border" /> 

1.вам не хватает косой черты [/]?И каково определение этого рисованного my_border

...