2012-01-12 2 views
2

Я хочу создать пользовательский элемент списка. В основном он имеет 3 области в горизонтальном LinearLayout. Самый левый должен быть 50dp в ширину, и самый правый. Я бы хотел, чтобы тот, кто посередине, занял остальную часть пространства. В итоге это должно быть «50px | width - 100px | 50px». Я знаю, что могу сделать это программно. Но могу ли я это сделать и в xml?Смешивание абсолютных и относительных размеров в Android Layout - как?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linearLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="100dp" 
    android:gravity="right" > 

    <FrameLayout 
     android:id="@+id/frameLayout1" 
     android:layout_width="50dp" 
     android:layout_ 
     android:layout_height="match_parent" 
     android:layout_weight="0"> 
    </FrameLayout> 

    <LinearLayout 
     android:id="@+id/linearLayout2" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:gravity="fill" 
     android:orientation="vertical" 
     android:layout_weight="0"> 

    </LinearLayout> 

    <FrameLayout 
     android:id="@+id/frameLayout2" 
     android:layout_width="50dp" 
     android:layout_height="match_parent" 
     android:layout_weight="0" > 

    </FrameLayout> 

</LinearLayout> 

Как обычно: с нетерпением жду, чтобы услышать ваши умные мысли & большое спасибо!

ответ

2

Просто установите макет-вес среднего элемента равным 1. И layout_width для fill_parent.

+0

Теперь я чувствую себя немного глупо. Я мог бы поклясться, что я пытался это сделать, но вы, вероятно, теперь это чувство. Можете ли вы указать мне более подробную документацию, чем http://developer.android.com/guide/topics/ui/declaring-layout.html? Объясните логику весов немного дальше? Благодаря! – fluxon

+0

Элемент сначала занимает определенное пространство. Затем, если осталось еще свободное место, остаток распределяется по разным частям, основываясь на их весах. Таким образом, вес 0 не получает ничего лишнего, вес 2 получает в два раза лишнее пространство как вес 1 и т. Д. По крайней мере, это логика LinearLayout. –

+0

Этот ответ дал мне 1000 :-) –

Смежные вопросы