Слои в Android Layout - PullRequest
       1

Слои в Android Layout

1 голос
/ 31 октября 2011

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

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical">
    <LinearLayout android:layout_width="wrap_content"
        android:layout_height="0dip" android:layout_weight="1"
        android:orientation="vertical" android:background="@drawable/mainbg">

    </LinearLayout>

        <ImageButton android:layout_height="wrap_content"
        android:background="#FF000000" android:src="@drawable/button1"
        android:padding="5dp"
        android:id="@+id/ImageButton1" android:layout_width="fill_parent">
    </ImageButton>

    <ImageButton android:src="@drawable/button2" android:background="#FF000000" android:id="@+id/ImageButton2"
        android:layout_width="fill_parent" android:focusable="true" android:saveEnabled="false" android:layout_height="wrap_content">
    </ImageButton>

    <TextView android:text="mywebsite.com" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>

В этом коде фоновый экран разбит, чтобы уместиться в оставшееся пространство экрана, не используемое бутонами. другими словами, две кнопки занимают 20% экранного пространства, затем изображение разбивается на оставшиеся 80%.

Мой вопрос: Есть ли способ создать эффект наложения, чтобы мои кнопки находились над слоем над фоновым изображением?

Ответы [ 4 ]

1 голос
/ 31 октября 2011

возможно <RelativeLayout/> будет лучше, чем <LinearLayout/> для вашего дизайна

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:background="@drawable/mainbg" >

        <ImageButton
            android:id="@+id/ImageButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/button1"
            android:layout_above="@id/ImageButton2"
            android:layout_centerHorizontal="true" >
        </ImageButton>

        <ImageButton
            android:id="@+id/ImageButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/button2"
            android:layout_alignParentBottom="true"
            android:layout_marginTop="10dp"
            android:layout_centerHorizontal="true" >
        </ImageButton>

    </RelativeLayout>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="mywebsite.com" >
    </TextView>

</LinearLayout>
1 голос
/ 31 октября 2011

Я не уверен, что понимаю ваш вопрос. Но похоже, что изображение «manbg» - это один из кнопок. Если вы хотите, чтобы он был фоном всего представления, вы должны сделать это изображение нарисованным для линейного макета PARENT.

Я думаю, что это будет делать то, что вы хотите:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical" android:background="@drawable/mainbg">


        <ImageButton android:layout_height="wrap_content"
        android:background="#FF000000" android:src="@drawable/button1"
        android:padding="5dp"
        android:id="@+id/ImageButton1" android:layout_width="fill_parent">
    </ImageButton>

    <ImageButton android:src="@drawable/button2" android:background="#FF000000" android:id="@+id/ImageButton2"
        android:layout_width="fill_parent" android:focusable="true" android:saveEnabled="false" android:layout_height="wrap_content">
    </ImageButton>

    <TextView android:text="mywebsite.com" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>

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

надеюсь, это поможет.

1 голос
/ 31 октября 2011

Возьмите RelativeLayout и установите фон, используя android:background.

Теперь, чтобы поместить кнопки в нижнюю часть, возьмите LinearLayout и возьмите 2 кнопки с изображением внутри. Упомяните android:width="0dp" и android:layout_weight="1dp" для обеих кнопок.

Точный XML-макет, который вы хотите:

<RelativeLayout 
    android:id="@+id/scrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/round_red">

    <LinearLayout 
        android:id="@+id/layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">

           <ImageButton
            android:id="@+id/button1"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:src="@drawable/icon"
            android:layout_weight="1">
           </ImageButton>

            <ImageButton
            android:id="@+id/button2"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:src="@drawable/icon"
            android:layout_weight="1">
           </ImageButton>
    </LinearLayout>

</RelativeLayout>

Обновление:

Почему я предлагаю использовать RelativeLayout? Я предлагаю вам использовать RelativeLayout, так как вы можете настраивать и отображать представления на основе Относительной позиции родительских / дочерних представлений. Если вы достаточно уверены в себе, вам не нужно больше разбирать макеты при разработке пользовательского интерфейса в Android с использованием RelativeLayout.

0 голосов
/ 31 октября 2011

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

android: layout_height = "0dip", поэтому эта высота будет занимать только высоту изображения. поэтому вам нужно поработать над этим.

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