2011-07-02 10 views
22

私はストロークを使用して、Androidのxmlレイアウトの図形に色付きの枠線を作成しています。アンドロイドの形の3辺のストロークを作る方法は?

3つのエッジ(左、上、下)のストロークを正しくNOにすることはできますか?

+0

の可能重複[開く両面のAndroidストローク?](http://stackoverflow.com/questions/2422120/open-sided-android-stroke) –

答えて

47

これは、レイヤリストを使用してパディングを混乱させることで実現できます。あなたは3つの要素が必要になります:

1:border.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ff0000"/> 
</shape> 

2:あなたの境界線の色でちょうど立体形状であるborder.xml形状、 'インナー' 形状、境界線を表示する図形:inner.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#00ff00"/> 
</shape> 

3:これらの2つを重ねて表示するレイヤーリストです。あなたは、内側の形状にパディングを設定することで、境界線を作成します。layerlist.xml

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/border"/> 
<item android:drawable="@drawable/inner" 
    android:top="3dp" android:right="0dp" android:bottom="3dp" 
    android:left="3dp" /> 
</layer-list> 
+0

非常に便利...すごい... – Vikram

+2

それはです複雑(Androidではいつものように) - うまくいく! –

+3

内部の形状を透明にするには –

1

別のアプローチは、あなたの背景のための9-Patch png fileを使用することです。通常のPNGファイルを作成し、thisのようなツールを使用して定義します。

  1. コンテンツがpngに入る領域。
  2. あなたのPNGの範囲は、基本コントロールとして伸び、幅や高さが増します。

9パッチのPNGファイルを作成したら、それをドロウアブルに追加します(さまざまな解像度のファイルを定義します)。次に、ドロアブルをコントロールの背景として設定します。

android:background="@drawable/my9_patch_file_name" 
関連する問題