Распределение пространства LinearLayout с изображением, текстом и изображением - PullRequest
2 голосов
/ 12 сентября 2011

У меня есть линейное расположение с 2-мя видами изображений и текстом. Я хочу правильное распределение пространства в строке макета. Это должно быть что-то вроде ниже

______________________________
|IV|                       |IV|
|  | <-- Text View ----->  |  |
_______________________________

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

Ниже моя попытка, и она не работает.

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

<LinearLayout android:orientation="horizontal"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_below="@+id/addTrip"
    android:layout_weight="1" android:layout_height="wrap_content">

    <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_gravity="left"
        android:src="@drawable/icon" />
    <TextView android:layout_weight="1" android:id="@+id/textView1"
        android:clickable="true" android:layout_width="0dp"
        android:layout_height="wrap_content" android:gravity="right"
        android:text="Enter trip name"></TextView>
    <ImageView android:id="@+id/imageView1"
        android:layout_gravity="right" android:src="@drawable/edit"
        android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
</LinearLayout>

Я использую это как инфлятор.

 ArrayList<TripInfo> trips = inst.getListOfTrips(); //reading from DB


        for (int i =0; i < trips.size(); i++) {
            TripInfo tobj = trips.get(i);
            LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            LinearLayout lrow = (LinearLayout)vi.inflate(R.layout.triprow, null);
           ((TextView)lrow.getChildAt(1)).setText(tobj.getName());
           placeHolderLinearLayout.addView(lrow);
        }

Эксперты, пожалуйста, предоставьте некоторую информацию. Нужно ли что-то устанавливать в коде?

1 Ответ

2 голосов
/ 12 сентября 2011

Оба вида изображения должны иметь: android:layout_width="wrap_content" и не указывать android:layout_weight.

И центральный TextView должен иметь android:layout_width="0dp" и android:layout_weight="1".


На самом деле это не имеет значения, если у вас есть 1 или любое другое значение, указанное какweigght.Пока это единственное представление, которое имеет layout_weight, оно занимает все свободное пространство.Таким образом, вы можете легко исправить ваш пример, просто удалив android:layout_weight="0.2" из последнего ImageView.

...