Я определил пользовательскую форму в папке 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>
Я использую его в качестве фона для одного из моих взглядов. Форма позиционируется вертикально по центру, но я хочу, чтобы она появилась внизу представления, есть ли способ сделать это?
Я не уверен, что есть способ сделать форму позиции внутри представления. Однако в качестве обходного пути я бы подумал об этом.
<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>
Это предположительно даст вам то, чего вы хотите достичь.
Следующие получают параметры макета поля формы, чтобы вы могли изменять поля вида, позиционируя их в любом случае:
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);
Попробуйте это, это может быть полезно,
http://thinkandroid.wordpress.com/2010/01/14/how-to-position-views-properly-in-layouts/
Установите свое собственное представление в качестве фона макета или вида. или, если это не полезно, укажите здесь код макета xml файла, чтобы я мог легче вам помочь.
У меня была аналогичная проблема, но я хотел иметь фон для своих представлений, прямоугольник, но только левую и нижнюю стороны прямоугольника, который будет показан, и никаких верхних или правых. Для этого я использовал этот 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 первого будет отображаться на экране слева и внизу. Кроме того, вы должны отметить, что цвет второго должен быть выбран тем, кто скрывается. В моем случае это был черный цвет.
Результат (вы можете видеть желтые линии только слева и внизу):
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"]