2011-07-09 13 views
1

私は私の解像度/描画可能フォルダ内のカスタムシェイプを定義した:ビュー内にカスタムシェイプを配置する方法は?

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="line"> 
    <stroke 
     android:color="#FF404040" 
     android:width="1dp" 
     android:dashGap="3dp" 
     android:dashWidth="3dp" 
    /> 
    <size 
     android:height="1dp" 
    /> 
</shape> 

私は私の意見の一つの背景として、それを使用しています。図形はビューの内側に垂直に配置されていますが、代わりにビューの下部に表示したいのですが、これを行う方法はありますか?

+0

あなたのレイアウトを投稿することができますか? – Ian

答えて

4

ビュー内で位置の形状を行う方法があるかどうかはわかりません。しかし、回避策として、私はこのようなものを検討します。

<RelativeLayout > 
    <OldView with shape as background now without any background 
     android:layout_alignParentTop="true" android:layout_alignParentBottom="true"/> 
    <View with this shape as background 
     android:layout_alignParentBottom="true"/> 
</RelativeLayout> 

これは、あなたが達成したいと思われるものです。

+0

私はこれが提出されたものの中で最善の答えであると判断しました。ディップやピクセルでの操作に頼るのではなく、画面解像度を超えて機能します。ありがとうございました。 –

+0

うれしそうに助かりました! – PravinCG

+0

これは引き続き最良の回避策ですか? –

0
I know gravity works on other kinds of drawables 

android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | 
          "fill_vertical" | "center_horizontal" | "fill_horizontal" | 
          "center" | "fill" | "clip_vertical" | "clip_horizontal"] 
+0

それはここで動作しないようです:/ –

2

http://thinkandroid.wordpress.com/2010/01/14/how-to-position-views-properly-in-layouts/

はレイアウトやビューの背景として、カスタムビューを設定し、これは有用である可能性がある、これを試してみてください。 またはあなたのレイアウトXMLファイルコードをここに入力すると便利です。もっと簡単にお手伝いできるようにしてください。

2

あなたが望む余白を変更することができるように、次はあなたが望むとにかくそれを配置、形状のマージンレイアウトのparamsを受け取る:

MarginLayoutParams params = (MarginLayoutParams)shape.getLayoutParams(); 
// Sets the margins of the shape, making it move to a specific location on the screen 
params.setMargins(int left, int top, int right, int bottom); 
1

私は同様の問題を抱えていたが、私は、バックグラウンドを持っていると思いました私の意見では、四角形が表示されますが、四角形の左と下の辺のみが表示され、上または右の矩形は表示されません。

<?xml version="1.0" encoding="utf-8"?> 

<item 
    android:bottom="2dp" 
    android:left="2dp" 
    android:right="2dp" 
    android:top="2dp"> 
    <shape 
     android:shape="rectangle" > 

     <stroke 
      android:width="1px" 
      android:color="#FFFF00" /> 
    </shape> 
</item> 
<item 
    android:bottom="3dp" 
    android:left="3dp" 
    android:right="1dp" 
    android:top="1dp"> 
    <shape 
     android:shape="rectangle" > 

     <stroke 
      android:width="1px" 
      android:color="#000000" /> 
    </shape> 
</item> 

注:これを達成するために、私はこのXMLを使用している2つの長方形、一方が他方の上に描かれたが、二番目があります最初の上に描かれているが、ビットがにシフトされているので、最初の1dpが画面の左と下に表示される。また、2番目の色は隠れたものにする必要があります。私の場合、それは黒い色でした。

結果は(あなたが唯一の左と下に黄色の線を観察することができる)である。 Result example