1. ホーム
  2. android

[解決済み] Android Viewの上下にボーダーを簡単に追加する方法はありますか?

2022-03-24 11:02:04

質問

TextViewの上下に黒枠をつけたいのですが、どうすればいいですか? そこで android:drawableTopandroid:drawableBottom をTextViewに追加しましたが、これではビュー全体が黒くなってしまうだけでした。

<TextView
    android:background="@android:color/green"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawableTop="@android:color/black"
    android:drawableBottom="@android:color/black"
    android:text="la la la" />

AndroidでView(特にTextView)に上下のボーダーを簡単に追加する方法はありますか?

解決方法は?

android 2.2では、以下のようにすることができました。

/res/drawable/textlines.xmlのようなxml drawableを作成し、これをTextViewのbackgroundプロパティとして割り当てる。

<TextView
android:text="My text with lines above and below"
android:background="@drawable/textlines"
/>

/res/drawable/textlines.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#FF000000" />
            <solid android:color="#FFDDDDDD" />

        </shape>
   </item>

   <item android:top="1dp" android:bottom="1dp"> 
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#FFDDDDDD" />
            <solid android:color="#00000000" />
        </shape>
   </item>

</layer-list>

この場合の欠点は、透明な背景色は使えないので、不透明な背景色を指定する必要があることです。(少なくとも私はそう思っていたが、それは間違いだった)。上の例では、最初のシェイプのソリッドカラー#FFddddが、2番目のシェイプのストロークカラーにコピーされていることがわかります。