2011-08-29 30 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