16

我正在启动一个使用 ActionBarSherlock 和 HoloEverywhereLib 的新应用程序。我的最小和目标 SDK 相同(10/2.3.3)。这只是为了让我也可以使用他们拥有的 android 运行时将其快速移植到 Amazon Kindle 和 BB10(已经将此设置用于另一个应用程序并且它可以正常工作)。一直以来,应用程序的外观应尽可能接近 ICS/JB。

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

几周前有人向我提到要获取 Gingerbread 的可绘制对象并将它们用于我的 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)光标根本没有出现在我的编辑文本中(灰色垂直线提示输入在编辑文本中的位置)

对于 a) 我假设我必须使用某种选择器或列表,对吗?如何?我是 android 样式的新手,任何帮助将不胜感激。我唯一要改变的是描边颜色。

对于b)我怎样才能让光标出现?

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

4

3 回答 3

27

我建议使用 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

您可以在此处找到有关 NinePatch 图像的更多信息。

希望能帮助到你。

于 2013-01-27T01:18:45.757 回答
12

已接受答案的简短版本

<?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>
于 2015-03-05T11:03:02.503 回答
0

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

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

尝试将此添加到您的editText:

android:paddingLeft="8dp" 
于 2013-11-18T13:37:22.733 回答