2010-12-16 12 views
6
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <include 
     layout="@layout/view1" 
     android:layout_gravity="center_vertical" /> 

    <include 
     layout="@layout/view2" 
     android:layout_gravity="center_vertical" /> 
</LinearLayout> 

Also, Android: layout_gravity wird immer ignoriert werden? Das ist wirklich schlecht für die Wiederverwendbarkeit von Code ... Es scheint, dass auch layout_margin nicht unterstützt wird.Layout "include" -Funktion unterstützt nicht layout_gravity-Eigenschaft?

Und hier ist view1.xml Layout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:minHeight="45dip" 
    android:background="@drawable/updater_background" > 

    <ProgressBar 
     style="?android:attr/progressBarStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:layout_marginRight="7dip" 
     android:visibility="gone" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" /> 
</LinearLayout> 
+0

Haben Sie eine Lösung für dieses Problem gefunden? Ich stehe vor dem gleichen Problem. – eftokay83

+0

Nein, ich nicht. Es scheint wie Android-Bug. –

+0

Es funktioniert immer noch nicht (Android 4.0.3)! Hast du ein Work around gefunden, um das ** layout_gravity ** Attribut für ** include ** zu verwenden? Auch wenn es wie gesagt funktioniert [HIER] (http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html), dass jedes android: layout_ * Attribut sein kann verwendet mit dem Tag. – Leeeeeeelo

Antwort

12

Zwei Jahre später existiert der Fehler immer noch! Obwohl ALLE Android: Layout_ * Attribute von dem Tag unterstützt werden sollten, ist das android: layout_gravity Attribut nicht (welche Art von ist ein großer Nachteil für Layout-Wiederverwendbarkeit).

Die Arbeit um, dass ich derzeit benutze ist das Layout-Marge programmatisch wie folgt festgelegt:

((LinearLayout.LayoutParams) includedView.getLayoutParams()).gravity = Gravity.BOTTOM | Gravity.RIGHT; 

OR für eine FrameLayout als Eltern zum Beispiel:

((FrameLayout.LayoutParams) includedView.getLayoutParams()).gravity = Gravity.BOTTOM | Gravity.RIGHT; 

EDIT:

Ich habe auch f ound, dass die android: layout_gravity Attribut für die umfassen Tag angewendet wird IF es (Die umfassen-Tag) hat layout_width und layout_height Tags!

+4

die Bearbeitung ist das sehr wichtige Detail! beide Attribute müssen da sein ... – WarrenFaith

+0

Danke für den Edit. Es funktioniert wirklich so in XML – Dude

0

http://developer.android.com/resources/articles/layout-tricks-reuse.html heißt alle layout_ Attribute unterstützt werden.

In Ihrem Fall hat die Zentrierung in einer horizontalen LinearLayout wahrscheinlich keinen Effekt. Versuchen Sie ein anderes Layout andere Parameter.

+0

Es tut mir leid für die Unannehmlichkeit, es sollte Android sein: layout_gravity = "center_vertical". Es funktioniert gut ohne Tag, aber funktioniert nicht damit. Ich überprüfte es auf Android 1.5 Gerät –

+0

können Sie auch die referenzierten .xml-Dateien pls? –

+0

gerade aktualisiert mein Beitrag mit view1.xml Layout –

0

Ich denke, die

Zum Beispiel durch das Einfügen gewichtete Layouts gelöst werden kann

<LinearLayout 
    android:orientation="vertical" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.sample.SampleActivity"> 

<LinearLayout 
    android:layout_weight="1" 
    android:layout_width="match_parent" 
    android:layout_height="0dp"> 

    <--Some other Views--> 

</LinearLayout> 


<include 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    layout="@layout/my_awesome_layout" 
    /> 

Das Linearlayout mit Raum ersetzt werden kann, wenn Sie keine Komponente wollen.

Verwandte Themen