Android使用形状,选择器或列表的不同状态的不同EditText背景

时间:2013-01-26 23:14:38

标签: android styles android-edittext state shape

我正在使用ActionBarSherlock& HoloEverywhereLib。我的分钟和目标SDK是相同的(10 / 2.3.3)。这只是我可以快速将其移植到亚马逊Kindle& amp; BB10使用他们拥有的Android运行时(已经将这个设置用于另一个应用程序,它没有问题)。应用程序应该尽可能接近ICS / JB。

对于我的EditTexts,我给他们一个Girgerbread / iOS(圆角,但没有阴影)看他们

几个星期前,有人提到我要抓住Gingerbread的drawables并将它们用于我的EditTexts。但我开始使用我在S / O找到的另一个答案,非常简单:

<EditText
 background:"@drawable/edittext_round_white"
 ..../>

&安培;我的edittext_round_white.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" 
  android:shape="rectangle"
  >
  <corners android:radius="8dp"/>
<stroke android:width="1dp"
    android:color="#444"/>
<solid android:color="#FFFFFF" />
  </shape>

现在,当我运行应用程序时,有两件事情是不对的

a)根本没有“焦点”(我知道我需要实现这个,这是问题的关键点)

b)光标在我的edittext中根本没有出现(灰色垂直线暗示输入所指向的edittext中的位置)

对于a) 我假设我要使用某种选择器或列表,对吧?怎么样?我是Android的样式新手,任何帮助将不胜感激。我唯一要改变的是笔触颜色。

对于b)如何让光标显示?

非常欢迎任何提示/链接/等!

3 个答案:

答案 0 :(得分:24)

我建议使用NinePatch图像来自定义EditText。这是一个基于我的代码的例子:

选择器:

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

使用选择器的方式与代码中使用的相同,将其设置为EditText的背景。

图片:

twitter_im_edittext_focused.9.png  twitter_im_edittext_focused.9.png

twitter_im_edittext_normal.9.png  twitter_im_edittext_normal.9.png

有关您可以找到的{9}}的NinePatch图像的更多信息。

希望它有所帮助。

答案 1 :(得分:7)

接受答案的简短版本

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:state_focused="true"
        android:drawable="@drawable/edit_text_background_focused" />
    <item android:drawable="@drawable/edit_text_background_normal" />
</selector>

答案 2 :(得分:0)

我认为问题在于您的光标位于editText框的左侧“边框/墙”上方,并且由于重叠而无法看到。

我所做的是为文本添加一些填充,这使光标和文本更加“向内”,然后变得可见。

尝试将此添加到您的editText:

android:paddingLeft="8dp"