Как сделать размер вида зависимым от размера другого вида? - PullRequest
0 голосов
/ 06 декабря 2010

Я делаю интерфейс, разработанный, как показано ниже.Вид 1 - это изображение, при показе разных картинок его размер будет разным.Размеры представления 2 и представления 3 зависят от вида 1. Как определить XML-файл, чтобы это произошло?

ps: дизайн получен от клиента, поэтому я не могу его изменить.

alt text

Ответы [ 2 ]

0 голосов
/ 07 декабря 2010

Я думаю, что LinearLayout здесь лучше, потому что самый простой способ установить соответствующие размеры - это использовать layout_weight.Если вы установите ненулевой вес только для одного элемента в LinearLayout, тогда он займет все оставшееся пространство.layout_weight делит оставшиеся пробелы в соотношении заданных весов.Он вычисляет размер оставшегося пространства после установки заданного layout_width-s (или height), а затем переопределит эти размеры.Если вы хотите разделить весь экран на фиксированные соотношения, а не оставшиеся пробелы после некоторой начальной настройки, то сначала вы должны установить размер элементов равным 0. Поэтому установите размер View1 равным wrap_content, а все остальные размерысоответствующие направления к 0 (заполнить родительский в другом направлении) и использовать layout_weight = 1.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout 
    android:orientation="vertical" android:layout_width ="wrap_content"
    android:layout_height="fill_parent">
      <ImageView
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src=.../>
    <SomeKindOfView
        android:id="@+id/view2"
        android:layout_width="fill_parent"
        android:layout_height="0px"
        android:layout_weight="1"/> 
  </LinearLayout>
  <AnotherView
    android:id="@+id/view3"
    android:layout_width="0px"
    android:layout_height="fill_parent"
    android:layout_weight="1"/>
</LinearLayout>
0 голосов
/ 06 декабря 2010

лучше используйте RelativeLayout для выполнения этой задачи .... Внесите соответствующие изменения и используйте его

 <RelativeLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content">
 <ImageView
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
 <TextView
          android:layout_below="@id/view1"
          android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
 <TextView
         android:layout_toRightof="@id/view1"
          android:layout_width="wrap_content"
        android:layout_height="fill_parent"/>


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