1

ビューの周囲に完全な境界線を追加しましたが、下の画像に示すように、コーナーだけを追加する必要があります。

ここに画像の説明を入力してください

私は赤い角だけを意味します。

以下のborderxmlを調整しようとしましたが、機能しませんでした:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
    <stroke android:width="10dp" android:height="10dp" android:color="#B22222" /> 
    <solid android:color="#FCE6C9" /> 
    <corners android:radius="20dp"  /> 
</shape>

どんな助けでもありがたいです

4

2 に答える 2

2

ShapeDrawableドローアブル自体に何らかのマージンまたはパディングを使用する必要があるため、を使用してこれを行うことはできないと思います。実際にはpadding属性がありますが、残念ながら、それはのコンテンツにのみ影響しView、ドローアブル自体には影響しません。

そうは言っても、簡単な解決策は、代わりに9パッチを作成し、それをバックグラウンドとしてに適用することTextViewです。デモンストレーションの目的で:9パッチを次のように表示します。

赤い丸みを帯びたコーナー9パッチの例


編集:LayerDrawable考え直してみると、実際には、を使用して目的の効果を作成する ことに依存する別のオプションがあります。作成するのは少し面倒で、9パッチを使用するよりも効率的だとは思いませんが、少なくとも画像をレンダリングする必要はありません。つまり、色を変更する必要がある場合などです。 、それはより簡単です。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/rounded" />
    <item android:drawable="@android:color/white" android:left="30dp"
        android:right="30dp" />
    <item android:bottom="30dp" android:drawable="@android:color/white"
        android:top="30dp" />
    <item android:bottom="30dp" android:left="10dp" android:right="10dp"
        android:drawable="@color/pink" android:top="30dp" />
    <item android:bottom="10dp" android:left="30dp" android:right="30dp"
        android:drawable="@color/pink" android:top="10dp" />

</layer-list>

詳細:@drawable/rounded自分で投稿したコードスニペットです。次の2つの項目は、白いエッジを作成するためのオフセット付きの単純な白い長方形です。さて、これらもピンクの表面をオーバーレイするので、それに対抗するためにさらに2つのピンクの長方形が必要です(ここでも特定のオフセットがあります)。結果は、質問で示しているものとまったく同じように見える背景になります。

これを少し最適化できるかどうかを確認したい場合があることに注意してください。少なくとも、オフセットをハードコーディングしないことをお勧めします(簡単にするために行ったように)が、とdimens.xmlの両方から参照することでこれらの値を一元化して一貫性を保つことができるように、オフセットをファイルに保存します。ShapeDrawableLayerDrawable

補遺: ICS以前(またはHoneycomb以前)のデバイスでは、android:drawable属性で色を直接参照することに問題があるようです。ShapeDrawableただし、この色を表す別のドローアブル(9パッチまたは)を設定することで、これを簡単に回避できます。たとえば、上記のスニペットでは、に置き換えます。ここで、android:drawable="@color/pink"は次のようなxmlファイルになります。android:drawable="@drawable/color_pink"color_pink

<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
    <solid android:color="#FCE6C9" /> 
</shape>

明らかに、で参照されている他のすべての色についても同じことを行う必要がありますLayerDrawable。ジンジャーブレッド2.3.7でテスト済み。

于 2012-05-20T01:44:18.237 に答える
0

9パッチファイルを作成し、それをメインコンテナの背景に設定します。それを行うための手順は次のようになります。

  1. 花火、イラストレーター、またはお好みの画像編集ソフトウェアで、おおまかに好きな背景を作成します。
  2. 次に、アートワークの周囲に1ピクセルの境界線だけが存在するように、アートワークをトリミングします。pngとして保存します。
  3. コンピューターC:\ Program Files(x86)\ Android \ android-sdk\toolsのandroidsdkフォルダーにあるdraw9patch.batファイルを開きます。
  4. pngファイルを開きます。次に、マウスを使用して外側の1ピクセルの境界線をクリックすると、クリックしたピクセルが黒くなります。上下または左右に黒いピクセルがある領域が、引き伸ばされた領域になります。あなたの場合、あなたはただ赤が伸びていない真ん中の領域を持ちたいだけです。
  5. 私の個人的な好みは、上記のファイルを開いて、9パッチファイルとして保存することです。次に、写真編集ソフトウェアでそれを開いて、上記と同じ方法で1ピクセルの太い線を作成します。それはより速くそしてより正確です。
  6. 最後に、ファイルをドローアブルフォルダに追加します。次に、メインビューコンテナの背景をドローアブルに設定します。

それはそれであるはずです。お役に立てば幸いです。

于 2012-05-20T01:59:26.657 に答える