16

ActionBarSherlock と HoloEverywhereLib を使用する新しいアプリを開始しています。私の最小およびターゲット SDK は同じです (10/2.3.3)。これは、Amazon Kindle & BB10 に Android ランタイムを使用してすばやく移植できるようにするためです (このセットアップを別のアプリで既に使用しており、問題なく動作していました)。その間ずっと、アプリは可能な限り ICS/JB の外観に近づける必要があります。

ただし、私の EditText については、Girgerbread/iOS (角は丸く、影はありません) の外観を与えています。

数週間前、Gingerbread のドローアブルを取得して、EditText に使用するように言われました。しかし、私はここ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>

アプリを実行すると、2 つの点が正しくありません

a)「フォーカス」がまったくありません(これを実装する必要があることは承知しています。それが問題のポイントです)

b) 編集テキストにカーソルがまったく表示されない (入力が指示されている編集テキストの場所を示す灰色の縦線)

a) ある種のセレクターまたはリストを使用する必要があると思いますよね? どうやって?私はアンドロイドでのスタイリングが初めてで、助けていただければ幸いです。変更するのはストロークの色だけです。

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 に答える