Как расположить пользовательскую фигуру внутри вида?

1

Я определил пользовательскую форму в папке 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>

Я использую его в качестве фона для одного из моих взглядов. Форма позиционируется вертикально по центру, но я хочу, чтобы она появилась внизу представления, есть ли способ сделать это?

  • 0
    Вы можете опубликовать свой макет?
Теги:

5 ответов

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
    рад, что это помогло!
Показать ещё 1 комментарий
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);
2

Попробуйте это, это может быть полезно,

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

Установите свое собственное представление в качестве фона макета или вида. или, если это не полезно, укажите здесь код макета xml файла, чтобы я мог легче вам помочь.

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 первого будет отображаться на экране слева и внизу. Кроме того, вы должны отметить, что цвет второго должен быть выбран тем, кто скрывается. В моем случае это был черный цвет.

Результат (вы можете видеть желтые линии только слева и внизу): Изображение 174551

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
    Это не похоже на работу здесь: /

Ещё вопросы

Сообщество Overcoder
Наверх
Меню