2012-06-27 8 views
19

外側の透明な内側に丸みを帯びた内側のコーナーを作るために、フレームからコードを作成しようとしています。 内側に透明な楕円形の実線の矩形と似ています。画像が添付されています。私はいくつかの形状の組み合わせを試してみました。透明な内側の枠で内側の角を丸めた

enter image description here

内部は白透明ではないはずです。 イメージはこのpostから取得されましたが、ここで提示されている解決策は私が探しているものではありません.9パッチの描画可能ファイルを使用したいのですが、コードで作成したいと思います。

有効な回答のみを入力してください。すべての

答えて

20

まず、描画可能なフォルダに3 xmllayoutを作成します。

  1. まず:frame.xml
  2. 第二:frame_build.xml
  3. サード:red.xml

(chan GEはこの名前、あなたが望むように)、

frame.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:bottom="20dp" android:drawable="@drawable/red" android:top="-25dp" /> 
    <item android:bottom="15dp" android:drawable="@drawable/frame_build" android:top="5dp" android:left="-5dp" android:right="-5dp" /> 
</layer-list> 

frame_build.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> 
    <corners android:radius="40dp" /> 
</shape> 

red.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <stroke android:width="40dp" android:height="40dp" android:color="#B22222" /> 
    <padding android:left="8dp" android:top="-1dp" android:right="8dp" android:bottom="9dp" /> 
    <corners android:radius="-10dp" /> 
</shape> 

は、最後に次のようにXMLをフレームにあなたのビューやレイアウトを参照してください。

android:background="@drawable/frame" 

これは画像以下のようにテストされ、出力:

Output image

・ホープこのヘルプ。

+0

は、私はちょうど必要なもののように思える、私は試してみましょう答えとして – user606669

+0

@ user606669を記入しておきます。 –

+0

私は試しましたが、その黒い背景は透明ではありません。間違ったことをしています。私はframelayoutでそれを使用しており、その下にフレームを表示する必要があります。 – user606669

38

次rounded_corner.xml作成:あなたはそれの上にフレームを適用する、あなたのImageViewの下にこれを追加

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:bottom="-10dp" 
     android:left="-10dp" 
     android:right="-10dp" 
     android:top="-10dp"> 
     <shape android:shape="rectangle"> 
      <stroke 
       android:width="10dp" 
       android:color="#ffffff" /> 
      <corners android:radius="20dp" /> 
     </shape> 
    </item> 
</layer-list> 

を:

<View 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignBottom="@+id/my_image_view" 
    android:layout_alignLeft="@id/my_image_view" 
    android:layout_alignRight="@+id/my_image_view" 
    android:layout_alignTop="@id/my_image_view" 
    android:background="@drawable/rounded_corner" /> 
+1

これが最良の答えです。ありがとう! – joseph

+0

それはうまくいっていますが、私はなぜ理解できないのですか? – Chol

+0

矩形の角を覆うより大きな「楕円のストローク」を描画しています。 –

関連する問題