изображение за пределами видимости изображения - PullRequest
0 голосов
/ 17 декабря 2011

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

EDIT:

Я отредактировал исходный код, чтобы более четко показать возникшую проблему, и добавил изображение (я хочу, чтобы изображение отображалось в красном поле):

enter image description here

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 
    android:id="@+id/top_container"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"     
    android:gravity="center"
    >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        >
        <View
            android:layout_height="fill_parent"
            android:layout_width="0dp"
            android:layout_weight="195"
            android:background="#00FF00"/>  
        <ImageView
            android:id="@+id/img"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="#ff0000"
            android:src="@drawable/img" />   

        <View
            android:layout_height="fill_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="#0000FF"
        />  
    </LinearLayout>
</LinearLayout>

Ответы [ 3 ]

0 голосов
/ 17 декабря 2011

Я не знаю, с чего начать с вопросов о том, что вы опубликовали, несколько простых замечаний, прежде чем даже отладку дальше:

  • Ваши макеты ВСЕ нуждаются в идентификаторах (например, android: id = "@ +id / another_layout ")
  • У вас есть ширина на втором линейном макете 0dp
  • Ваш первый линейный макет имеет высоту 0 dp, в сочетании с предыдущим, я удивлен, что он отображает ввсе
  • Последняя внутренняя линейная схема снова имеет ширину 0dp

Чего вы пытаетесь достичь?Мне кажется, что есть много макетов, если вы не удалили некоторые элементы, чтобы было легче понять?Вы можете опубликовать простое изображение того, что вы пытаетесь сделать, тогда, возможно, мы сможем помочь вам улучшить разметку?

0 голосов
/ 17 декабря 2011

Хорошо, у меня это работает. Атрибут высоты "block_container" установлен в случайное значение 200 dp, вы захотите изменить высоту в соответствии с вашими потребностями или потенциально установить ее в значение "wrap_content". Я проверил это на эмуляторе и устройстве.

Я также предполагаю, что вы хотите, чтобы все три блока были расположены на одинаковом расстоянии. Обратите внимание, как родительский "block_container" имеет weight_sum 9? Дети имеют одинаковую ширину, потому что они имеют вес 3 каждый (3 блока * 3 веса каждый = всего 9 весов).

Я заметил, прежде чем выглядело, как будто вы пытались использовать вес как ширину, например. вес 569. Просто запомни вес! = ширина прямо.

РЕДАКТИРОВАТЬ: добавлены отсутствующие атрибуты id из некоторых представлений

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

    <LinearLayout
        android:id="@+id/block_container"
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:orientation="horizontal"
        android:weightSum="9"
        >
        <View
            android:id="@+id/left_block"
            android:layout_height="fill_parent"
            android:layout_width="0dp"
            android:layout_weight="3"
            android:background="#00FF00"/>  
        <ImageView
            android:id="@+id/img"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="3"
            android:background="#ff0000"
            android:src="@drawable/logo" />   

        <View
            android:id="@+id/right_block"
            android:layout_height="fill_parent"
            android:layout_width="0dp"
            android:layout_weight="3"
            android:background="#0000FF"
        />  
    </LinearLayout>
</LinearLayout>
0 голосов
/ 17 декабря 2011

Почему вы устанавливаете android:layout_height в 0dp?Я даже не могу отобразить его, пока я не изменю это на что-то вроде fill_parent.

В любом случае, это из-за вашего layout_weight для родителя LinearLayout.Укажите большее значение layout_weight для вашего ImageView, и оно появится.

    <ImageView
        android:id="@+id/my_img"
        android:gravity="center"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="279"
        android:src="@drawable/my_img" />

Это сработало для меня ... но математика может быть неправильной.

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