ActionBarSherlockとHoloEverywhereLibを使用する新しいアプリを開始しています。私の最小SDKとターゲットSDKは同じです(10/2.3.3)。これは、Androidランタイムを使用してAmazon Kindle&BB10にすばやく移植できるようにするためです(すでにこのセットアップを別のアプリで使用しており、問題なく動作しました)。 ICS/JBにできるだけ近い外観にする必要があります。
しかし、私のEditTextsについては、Girgerbread/iOS(角は丸いが、影はない)をそれらに見せています。
数週間前、誰かがジンジャーブレッドのドローアブルを入手して、私の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)ある種のセレクターまたはリストを使用する必要があると思いますよね?どうやって? Androidのスタイリングは初めてですが、助けていただければ幸いです。変更するのはストロークの色だけです。
B)カーソルを表示するにはどうすればよいですか?
ここでのヒント/リンクなどは大歓迎です!
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_normal.9.png
あなたが見つけることができるNinePatch画像についての詳細 ここ 。
それが役に立てば幸い。
受け入れられた回答の短いバージョン
<?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>
問題は、カーソルがeditTextボックスの左側の「境界線/壁」の上にあり、重なりのために表示されないことだと思います。
私がしたことは、テキストにパディングを追加することでした。これにより、カーソルとテキストがさらに「内側」に移動し、表示されるようになりました。
これをeditTextに追加してみてください:
Android:paddingLeft="8dp"