1

У меня есть три текстовых блока и изображение, которое я хотел бы поместить в макет, как указано в эскизе. (Игнорируйте красные линии на секунду.) enter image description here
(Я знаю, что качество ужасно. Если кто-то может порекомендовать мне хороший графический редактор для os x/linux, я был бы признателен (нет, не gimp !))позиционирование текстовых блоков и изображений

Моя идея состояла в том, чтобы решить эту проблему так:

  • Relative Layout.
  • положение второго текстового блока относительно первого.

.: например

android:layout_below=text1 
android:layout_ (make it "float" to screen's right edge - not sure how to do that, yet. 
  • Третий блок текста по отношению к 1-й и 2-го блока.

.: например

android:layout_below=text2 
android:layout_alignLeft = text1 

Ok. Нет, давайте посмотрим на изображение. Это произвольный размер, поэтому я подумал, что с некоторыми выравниваниями я мог бы в него вписаться. Если вы знаете, посмотрите на красные линии из эскиза, я хочу, чтобы вы соответствовали изображению соответственно.

android:layout_alignTop = text2 
android:layout_alignBottom = text2 
android:layout_alignLeft = text1 

Однако я не очень хорошо делать макеты и когда я пытался реализовать его, как это 4 части содержания более или менее постучали вокруг на экране, но я никогда не получал их все на место.

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

<TextView 
    android:id="@+id/text1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dip" 
    android:text="text1" /> 

<ImageView 
    android:id="image" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="text1" 
    android:layout_marginRight="7dip" 
    android:layout_marginTop="5dip" 
    android:adjustViewBounds="true" 
    android:maxHeight="150sp" 
    android:maxWidth="150sp" 
    android:src="srcFile" /> 

<TextView 
    android:layout_marginTop="5dip" 
    android:id="text2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="image" 
    android:layout_below="text1" 
    android:layout_toRightOf="image" 
    android:text="text2" /> 

<TextView 
    android:id="text3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="image" 
    android:layout_marginTop="10dip" 
    android:text="text3" /> 

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

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

android:maxHeight="150sp" 
android:maxWidth="150sp" 

ответ

1

Можно сохранить пропорции изображения и отрегулировать его размер без кода. Просто используйте линейные схемы и вес мнение соответственно

<TextView 
     android:id="@+id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="text1" /> 

    <LinearLayout 
     android:id="@+id/ll" 
     android:layout_below="@+id/text1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:weightSum="2" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/image" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="11" 
      android:adjustViewBounds="true" 
      android:src="srcFile" /> 

     <TextView 
      android:id="@+id/text2" 
      android:layout_weight="1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="text2" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/text3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/ll" 
     android:text="text3" /> 
+0

действительно. работает как шарм! Спасибо за это. – yoshi

0

Простые решения, вероятно, лучший.Используйте linear layout с набором ориентации горизонтали или по вертикали:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    > 
    <TextView 
     android:id="@+id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dip" 
     android:text="text1" /> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="horizontal"> 
     <ImageView 
      android:id="image" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:layout_marginRight="7dip" 
      android:layout_marginTop="5dip" 
      android:adjustViewBounds="true" 
      android:maxHeight="150sp" 
      android:maxWidth="150sp" 
      android:src="srcFile" /> 

     <TextView 
      android:layout_marginTop="5dip" 
      android:id="text2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="text2" /> 

    </LinearLayout> 
    <TextView 
     android:id="text3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dip" 
     android:text="text3" /> 
</LinearLayout> 
+0

но есть также жёстко MaxHeight/-width o.o – yoshi

+0

, то вы можете сделать это во время выполнения с помощью экранного объекта, чтобы получить размеры экрана –

0

Было бы достаточно, чтобы

ремонта ID изображения, как

android:id="@+id/image" 

и использовать

android:layout_toRightOf="@+id/image" 
android:layout_below="@+id/text1" 

во втором тексте

Для третьего только

android:layout_below="@+id/text2" 

LinearLayouts ... Я люблю их тоже, они просты, но медленно - не использовать их много.

+0

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

+0

Вы ** не можете ** сохранять пропорции изображения и изменять его размер одновременно без кода. – Gangnus

+0

На вопрос был дан ответ, ошибка была обнаружена - отметьте ответ, пожалуйста. И так чересчур измененный ответ будет другим. – Gangnus