2011-08-29 66 views
2

我嘗試將我自己的設計應用於edittext,並在啓用,聚焦等情況下使用android本機選擇器。問題是,每次觸摸edittext並且本機選擇器正在處理我的edittext變得更小。任何人都可以請說明爲什麼發生這種情況下面是我的代碼片段:Android EditText本機選擇器

<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與按鈕完全相同的事情正在發生。

回答

1

由於沒有人能夠完全回答我的問題,我會自己回答。問題在於我的編輯文字每次觸及時都會變小。發生這種情況是因爲Android中的native edittext背景具有透明區域。所以我用了一個圖層列表來創建我的背景,並在其周圍有一個透明區域。這裏是代碼:

<?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

我認爲有一些XML missin?我只看到XML標題:) ... – Ready4Android

0
<item 
android:drawable="@drawablemy_border" /> 

1.是否缺少一個斜槓[/]?什麼是的定義,繪製my_border

+0

號我只是錯過了/在寫我的問題。已經添加了。 – superM

+0

'my_border'呢? – mihail

+0

它是EditText周圍的綠色窄邊框。我已將代碼添加到我的問題中。 – superM

0

好吧,我想這個文件後,當它沒有啓用的EditText不使用你的選擇,並出現與它的標準配置......所以加入

<item android:state_enabled="false" android:drawable="@android:drawable/edit_text"/> 到您的選擇器應該是解決方案

+0

我想你沒有得到這個問題。沒有問題,如果一個國家出現問題,修理它就沒有問題。問題是,每次我觸摸或選擇我的編輯文本它變得更小。 – superM

+0

好吧,我在模擬器和設備(htc dhd)上試過這個,edittext的大小和選擇器的大小相同 - 它看起來比標準更小。如果我觸摸或選擇它。我真的沒有得到這個問題... – mihail

8

首先,非常感謝您的文章,幫助了我很多, 但你的代碼上面(樣品選擇)wasnt工作對我來說:

,所以我將它改編爲別人,所以如果有人搜索HOWTO標記文本框的選擇

<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> 

樂趣:=)好運:)

+2

很高興我幫你。謝謝你的回答))) – superM