Просмотр изображений Android поверх linearlayout

#java #android #android-layout

#java #Android #android-макет

Вопрос:

Я разрабатываю приложение для Android, макет показан на изображении ниже :

Скриншот http://www.lebanon-trading-center.com/daymanager/layout.PNG

Макет содержит 2 основных линейных макета: горизонтальный макет, который занимает 90% высоты устройства, и вертикальный макет, который занимает 10% от него. Внутри горизонтального linearlayout есть три linearlayout (два красных и один, содержащий imageview). Каждый красный макет составляет 10% от ширины экрана, а тот, который содержит ImageView, составляет 80%. Вот XML-код :

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight="0.9"
        android:weightSum="1"
         >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_weight="0.1"
            android:background="#ff0000" >
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:gravity="center_horizontal"
            android:layout_weight="0.8" >

            <ImageView
                android:id="@ id/imageView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:adjustViewBounds="true"
                android:src="@drawable/ic_launcher" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_weight="0.1"
            android:background="#ff0000"  >
        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="0.1"
        android:background="#000000" >
    </LinearLayout>

</LinearLayout>
  

Проблема в том, что когда я устанавливаю изображение PNG (1036 пикселей X 730 пикселей) в качестве источника для ImageView, ImageView будет поверх нижнего linearlayout (черного), а два красных макета будут сжаты.

Скриншот http://www.lebanon-trading-center.com/daymanager/layout2.PNG

Мой вопрос в том, как я могу решить проблему и использовать одинаковые макеты на всех типах планшетов?

Комментарии:

1. можете ли вы опубликовать изображение макета, где при установке изображения png (1036 пикселей X 730 пикселей)

Ответ №1:

 Try this way,hope this will help you to solve your problem.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="horizontal"
        android:layout_weight="0.90">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_weight="0.10"
            android:background="#ff0000" >
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:gravity="center_horizontal"
            android:layout_weight="0.80" >

            <ImageView
                android:id="@ id/imageView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="fitXY"
                android:src="@drawable/ic_launcher" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_weight="0.10"
            android:background="#ff0000"  >
        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="vertical"
        android:layout_weight="0.10"
        android:background="#000000" >
    </LinearLayout>

</LinearLayout>
  

Комментарии:

1. Большое спасибо, это сработало, могу ли я обойти это, чтобы изображение не растягивалось?

2. Конечно, замените это: android:scaleType=»fitXY» на это: android:adjustViewBounds=»true» на ImageView

3. Еще раз спасибо, Хареш!

4. @user3012088 К вашему сведению, вложенные веса плохо влияют на производительность. Но я думаю, что другого выбора нет 🙂

5. Спасибо, я приму это во внимание