Как оформить рамку в Android? - PullRequest
1 голос
/ 05 января 2012

Я хотел бы сконструировать рамку, используя 4 ImageView для каждой верхней, нижней, левой и правой сторон этой рамки, как показано в следующем примере:

enter image description here

Кажется простым, но мне действительно тяжело это делать. Я попытался использовать FrameLayout вместе с layout_alignParentLeft|Right|Top|Bottom, как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/camera_masque"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:background="#FFFFFF"
     >
        <ImageView
            android:id="@+id/camera_top_masque"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_top_masque_photo"
            android:layout_alignParentTop="true"
        />

        <ImageView
            android:id="@+id/camera_left_masque"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/ic_left_masque_photo"
            android:layout_alignParentLeft="true"
        />

        <ImageView
            android:id="@+id/camera_right_masque"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/ic_right_masque_photo"
            android:layout_alignParentRight="true"
        />

         <ImageView
            android:id="@+id/camera_bottom_masque"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_bottom_masque_photo"
            android:layout_alignParentBottom="true"
        />
</FrameLayout> 

Он хорошо работает для верхней и левой сторон, но не для других (как будто он размещает правую и нижнюю стороны на верхней стороне ...).

Я также пытался использовать RelativeLayout так:

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/camera_masque"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:background="#FFFFFF"
     >
        <ImageView
            android:id="@+id/camera_top_masque"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_top_masque_photo"
            android:layout_alignParentTop="true"
        />

        <ImageView
            android:id="@+id/camera_left_masque"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="-2dp"
            android:src="@drawable/ic_left_masque_photo"
            android:layout_below="@id/camera_top_masque"
        />

        <ImageView
            android:id="@+id/camera_right_masque"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/ic_right_masque_photo"
            android:layout_marginRight="-2dp"
            android:layout_below="@id/camera_top_masque"
            android:layout_alignParentRight="true"
        />

         <ImageView
            android:id="@+id/camera_bottom_masque"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_bottom_masque_photo"
            android:layout_alignParentBottom="true"
        />
</RelativeLayout> 

Но то же самое, не работает, как ожидалось.

Есть идеи, что не так с моими раскладками? Как я мог сделать это?

Примечание. Размеры изображений: 640 * 114 пикселей (вверху, внизу) и 34 * 572 (слева, справа).

Спасибо!

Ответы [ 3 ]

4 голосов
/ 05 января 2012

Я обычно использую linearlayout для таких вещей и контролирую заливку с помощью параметров layout_weight. Вы, вероятно, найдете много подобных вопросов здесь.

Просто создайте вертикальный линейный макет и в средней части создайте горизонтальный линейный макет.

Это становится намного проще, если вы используете конструктор макетов WYSIWYG в Eclipse ADT .... Подробнее

Существует множество учебных пособий для макетов Android, которые являются более полезным ресурсом, поскольку переполнение стека имеет тенденцию решать проблемы программирования, а не макеты.

1 голос
/ 05 января 2012

Если кадр построен из одинаковых изображений.Вы можете попробовать 9-патч для рисования или фигуру с границами и прозрачным центром.

1 голос
/ 05 января 2012

Я отвечу на свой вопрос, чтобы осветить допущенные ошибки.Оказывается, я был почти там, мне нужно было только добавить alignParentTop справа и слева ImageView s и alignParentLeft внизу ImageView.

Я не понимаюлогика этого, хотя!(если кто-то может объяснить ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...