2016-02-07 3 views
0

Я пытаюсь заполнить мероприятие двумя видами, ImageView с левой стороны и TextView справа. Изображение должно быть размером, чтобы заполнить все вертикальное пространство. Текст должен занимать все свободное место. После просмотра нескольких учебных пособий мне кажется, что мне нужен LinearLayout с горизонтальной ориентацией, а для свойства layout_weight - целое положительное число.Android Layout; Изображение занимает весь экран

Это то, что я до сих пор:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:src="@drawable/charsheet" /> 

    <TextView 
     android:id="@+id/ipsum" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="@string/ipsum" /> 

</LinearLayout> 

Проблема заключается в том, однако, что изображение, создает пустое пространство слева и справа, который заполняет весь экран. Для TextView нет места.

enter image description here

Я также попытался с помощью RelativeLayout с ImageView «s toStartOf собственности, установленным в идентификатор TextView, но затем текст заполняет весь экран вместо.

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

+1

Вы хотите, чтобы изображение обрезано, чтобы соответствовать или изменить размер, чтобы соответствовать? –

+0

Изменение размера, я думаю. Я хочу увидеть весь образ, просто минус добавляемое свободное пространство. –

ответ

3

Я думаю, что вам не хватает в adjustViewBounds на ImageView. Попробуйте так:

<?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="horizontal" 
    > 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:scaleType="fitStart" 
     android:adjustViewBounds="true" 
     android:src="@drawable/doug" 
     /> 

    <TextView 
     android:id="@+id/ipsum" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="ipsum" 
     /> 

</LinearLayout> 

Без adjustImageBounds, ImageView занимает больше места, чем нужно, чтобы отобразить изображение.

выше расположение создает предварительный просмотр в Android Studio, который выглядит, как это для меня:

enter image description here

+0

В Android-студии 3.0 он не работает. Я просто попробовал. Фон черный, а текстовое изображение намного меньше. –

0

Переместить android:layout_weight="1" в ImageView, а в TextView сделать вес 0. Примечание. Вам нужно установить layout_width для ImageView в 0px.

<ImageView 
    android:id="@+id/imageView" 
    android:layout_weight="1" 
    android:layout_width="0px" 
    android:layout_height="match_parent" 
    android:src="@drawable/ic_launcher" /> 

<TextView 
    android:id="@+id/ipsum" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:text="ipsum" /> 
+0

Это заставляет текст полностью заполнять экран, оставляя изображение скрытым. –

+0

Я забыл layout_width: 0px, попробуйте сейчас – Gavriel

+0

Теперь изображение не масштабируется , и весь экран заполнен частью изображения. –

0

Вы можете играть с ImageView scaleType, как:

android:scaleType="fitCenter" 
+0

Это не имеет никакого эффекта –