2011-07-09 68 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

下接收形狀,這樣就可以改變看法的利潤率保證金佈局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:

<?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> 

注:有兩個矩形,一個在另一個之上繪製,第二個第一個繪製在頂部,但有點偏移,所以1DP的第一個要顯示在左側和底部的屏幕上。此外,您必須注意,必須選擇第二個顏色作爲隱藏的顏色。在我的情況下,它是黑色的。

結果是(你可能只在左側和底部觀察黃線): Result example