そのため、周囲にクールな境界線を持つTextViewが必要でした。私はそれを行う標準的な方法を見つけることができなかったので、私はこれを思いつきました:
@ drawable/custom_bg_1:青い丸い形
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#439CC8"/>
<corners Android:radius="3dp" />
<padding Android:left="10dp" Android:top="10dp"
Android:right="10dp" Android:bottom="10dp" />
</shape>
@ drawable/custom_bg_2:白い丸い形
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#FFFFFF"/>
<corners Android:radius="3dp" />
<padding Android:left="10dp" Android:top="10dp"
Android:right="10dp" Android:bottom="10dp" />
</shape>
myactivity.xml:アクティビティのxml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical"
Android:padding="15dp" >
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:padding="2dp"
Android:background="@drawable/custom_bg_1" >
<TextView Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="@string/curr_loc"
Android:textSize="15sp"
Android:background="@drawable/custom_bg_2" />
</LinearLayout>
</Linearlayout>
結果:
ここで行っているのは、青い図形の背景の中に白い図形の背景を重ねて、青い境界線の効果を与えることです。これがこの効果を得る最良の方法だとは想像できません。 this や this など、この問題を解決しようとする他の投稿を見てきましたが、それらは私の実装と同じくらい回避策のようです。
TextViewなどの特定のビューの周囲に単純に境界線を置くより良い方法またはより標準的な方法がありますか、それとも私はそれを行う方法に固執する必要がありますか?
編集
Custom_bg_2.xmlを次のように変更しました。
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#FFFFFF"/>
<stroke Android:width="2dp" Android:color="#000000"/>
<corners Android:radius="3dp" />
<padding Android:left="10dp" Android:top="10dp"
Android:right="10dp" Android:bottom="10dp" />
</shape>
そして今、私はこの結果を取得します:
<stroke ... />
を形状に含めることで、アウトラインを実現できるようです。
<stroke>セクションを追加すると、おそらくcustom_bg_2だけでうまくいくでしょう:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#FFFFFF"/>
<corners Android:radius="3dp" />
<padding Android:left="10dp" Android:top="10dp"
Android:right="10dp" Android:bottom="10dp" />
<stroke Android:color="#439CC8" Android:width="2dp" />
</shape>
なぜsolidの代わりにstrokeを試してみませんか?
Shape Drawable によると、次のようなことができます:
<stroke Android:width="2dp" Android:color="#439CC8"/>
の代わりに <solid/>
そして、それをTextView
バックグラウンドとして設定します。