2012-01-12 12 views
13

私は簡単な目標を持っています。私はそれの下に黒い分割線(唯一のアンダーナース、すべてではない)で、私のFrameLayout上の明るい灰色の背景が欲しい。これまでのところ私はこれがあります。xmlのドロウアブルで重力「ボトム」を処理する方法

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
    <shape android:shape="rectangle" android:gravity="center"> 
     <solid android:color="#EEEEEE" /> 
    </shape> 
    </item> 
    <item> 
    <shape android:shape="line" android:gravity="bottom" > 
     <stroke android:width="1dip" android:color="#010101"/> 
    </shape> 
    </item> 
    </layer-list> 

をしかし、それはすなわち、重力=「下の」ビットを無視し、中央を通る線を引きます。これをどうすれば解決できますか?

編集:この質問は非常に古いです。選択された回答は、現在のAPIなどとインラインである場合もあれば、そうでない場合もあります。これ以上監視されていない独自の質問を追加することはお勧めします。

答えて

5

私はこのために9-パッチ画像を使用してお勧めします - ここで仕事をする必要がある例を示します

Example nine-patch image

(それはほんのだが、それがある!)

をあなたの場合これをあなたのdrawableフォルダに置き、あなたのFrameLayoutの背景をそれに設定すると、望みの結果が得られるはずです。コンテンツは灰色の領域に入り、#010101ピクセルは水平に引き伸ばされて一番下に線が形成されます。 .9.png拡張子を9つのパッチとして読み込むようにしてください。あなた

+1

それはいい点です、私はそうすることができます。実際、私はまだ重力タグがそのラインのために働くために熱心に知っていることに興味があるでしょう - 私にはより良い解決策のようですが、あなたの提案に感謝します。 –

+1

重力タグはここにありません(http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.html)。私は純粋なXMLを使用してこれを達成する方法を見ることができません、あなたは、コードでShapeDrawableを作成し、レイアウトの境界に基づいてその境界を設定することができますか? – kingraam

17

を助け

ホープ残念ながら、私はドロウアブルのために働いて重力を取得する方法を発見していないが、私はあなたが純粋なXMLであなたがを望むものを達成できるかが見つかりました:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:top="-2dp" 
     android:left="-2dp" 
     android:right="0dp" 
     android:bottom="1dp" 
     > 
     <shape android:shape="rectangle"> 
      <solid android:color="#EEEEEE"/> 
      <stroke android:width="1dp" android:color="#010101"/> 
     </shape> 
    </item> 
</layer-list> 

幸運:)

+1

<ビットマップ アンドロイド:重力= "左|下" アンドロイド:SRC = "描画可能/ myDrawable @" /> usman

22

私もこれで多くの苦労をしました。基本的には、下に境界線を作成するには、予想とは逆の方向に考える必要があります。境界線の色で始まる矩形で始まります。さらに、実際の色を下からオフセットして描画します。 Juan Pablo Saracenoとして

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

    <!-- CREATE A RECTANGLE WITH YOUR BORDER COLOR --> 
    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="#fff"/> 
     </shape> 
    </item> 

    <!-- NOW DEFINE THE NORMAL COLOR--> 
    <item android:bottom="BOTTOM_BORDER_THICKNESS E.G. 4dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="#ccc"/> 
     </shape> 
    </item> 
</layer-list> 

または、提案: 私は、これは使用

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <color android:color="YOUR_BORDER_COLOR" /> 
    </item> 
    <item android:top="YOUR_BORDER_THICKNESS"> 
     <color android:color="YOUR_BG_COLOR" /> 
    </item> 
</layer-list> 
+3

これは本当に良い答えであるとより良い位置私見であることを値します。私はアンドロイドが重力を適切な方法でサポートしておらず、これをやるよう強制するのは残念なことだと思います。矩形、図形の代わりにのタグを使用しても私にとってはうまくいった。 <層リストのxmlns:アンドロイド= "http://schemas.android.com/apk/res/android"> <色アンドロイド:色= "YOUR_BORDER_COLOR" /> <項目アンドロイド:トップ= 「YOUR_BORDER_THICKNESS」> <カラーアンドロイド:あなただけ実際にそれをオーバードローするためにあなたの境界線の色と完全な四角形を描画しているので、=「YOUR_BG_COLOR」/> –

+5

色が唯一の問題は、私はオーバードロー生成していることです矩形。実際の重力がなければ、9パッチが勝ちます。 –

+1

半透明のトップ部分としっかりとしたボトム部分が必要な場合は、これは機能しません。だから、私は9パッチで作業する必要があると思いますか? –

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

    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/Black" /> 
     </shape> 
    </item> 
    <item android:bottom="5dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/White" /> 
     </shape> 
    </item> 

</layer-list> 
2

これは動作します!

<item> 
     <bitmap 
     android:gravity="left|bottom" 
     android:src="@drawable/myDrawable" /> 
</item> 
+0

Nop ShapeDrawableでは描画可能でビットマップではないため、描画しません。 – nsvir

1

まあ、それはかなり古い質問ですが、答えのどれも実際の質問(gravityが働い作り方)ので、ここでは実施例の答えように見えるん:あなたの場合は、類推により

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

    <item> 
     <color android:color="#2196F3"/>  <!-- Background color --> 
    </item> 

    <item android:gravity="bottom"> 
     <shape> 
      <size android:height="10dp" />  <!-- I would suggest 1dp --> 
      <solid android:color="#F50057" /> <!-- Line color --> 
     </shape> 
    </item> 
</layer-list> 

を重力を使用したいleftまたはright属性を変更するheight

関連する問題