如何在视图中定位自定义形状?

时间:2011-07-09 21:47:18

标签: java android

我在res / drawable文件夹中定义了一个自定义形状:

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

我正在使用它作为我的一个观点的背景。形状垂直居中放置在视图内部,但我希望它显示在视图的底部,有没有办法做到这一点?

6 个答案:

答案 0 :(得分: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>

这应该会给你你想要达到的目标。

答案 1 :(得分:2)

试试这个,这可能很有用,

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

将自定义视图设置为布局或视图的背景。 或者如果没用,那么在这里提供你的布局xml文件代码,这样我就可以更轻松地帮助你。

答案 2 :(得分:2)

以下内容接收形状的边距布局参数,以便您可以更改视图的边距,无论如何都可以定位:

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);

答案 3 :(得分: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

答案 4 :(得分: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"]

答案 5 :(得分:0)

这是我决定嵌入图块

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle"
            >
            <solid android:color="#f00" />
            <corners android:radius="50dp" />
            <padding  android:bottom="20dp" />
        </shape>
    </item>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle"
            >
            <solid android:color="#090" />
            <corners android:radius="50dp" />
            <padding
                android:top="450dp"
                />strong text
        </shape>
    </item>
</layer-list>

enter image description here