2013-04-22 11 views
10

Jestem stoi dziwny problem w moim projekcie podczas tworzenia prostą konstrukcję xml następujące:Różnica android wzorów układ między wersjami 2.3.3 i 4+

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:background="#FF0000" 
    android:layout_marginLeft="30dp" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_gravity="left|center_vertical"/> 

teraz zobaczyć różnicę jest to widok w 4.2.2:

2.3.3 version

A ten w 2.3.3:

enter image description here

Czy wdzięczni, jeśli ktoś może mi pomóc z tym. Dzięki

+0

z ciekawości dlaczego próbujesz ustawić layout_gravity na lewy i center_vertical? – FoamyGuy

+0

Uhm ... Jaka jest różnica? Czy chcesz, aby był "holofied"? – Ahmad

+1

@Ahmad czarny pasek (margines prawdopodobnie) jest po przeciwnych stronach – FoamyGuy

Odpowiedz

3

To działa, jeśli zmienić go na to:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center" 
    android:layout_marginLeft="30dp" 
    android:background="#FF0000" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:text="New Button" /> 

</LinearLayout> 

(. Chyba wiem, dlaczego zachowuje się tak, niech mi tylko coś sprawdzić dodam wyjaśnienie później)

+0

Cześć Ahmad, to tylko rozwiązało układ, który sprawił, że zadał prawdziwą odpowiedź. w moim projekcie mam bardzo złożony układ, którego nie można zmienić w ten sposób. czekam na twoje wyjaśnienie. dzięki –

+0

@UdiOshi Przepraszam, moje założenie było błędne (a przynajmniej nie mogę znaleźć żadnych dowodów na poparcie tego). Ale jednak ustawienie 'layout_gravity' na najwyższy układ bez względu na grawitację go naprawia. – Ahmad

+0

dzięki Ahmad, ale w innych układach kompleksów, jeśli ustawię grawitację układu, wszystko to zniszczy :( –

0

mam wobec tego samego problemu, w moim przypadku miałem coś takiego

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/match" 
    android:background="@color/light" 
    android:orientation="vertical" 
    android:layout_margin="@dimen/lateral_margin" > 

    <ImageView 
     android:id="@+id/full_screen_image" 
     style="@style/match_width" 
     android:scaleType="fitCenter" 
     android:layout_gravity="center" 
     android:layout_weight="2" 
     android:contentDescription="@string/image_content_description"/> 

    <TextView 
     android:id="@+id/barcode_number" 
     style="@style/match_width" 
     android:gravity="center" 
     android:textColor="@color/dark_text" 
     android:textSize="30sp" 
     android:visibility="gone" /> 

</LinearLayout> 

mój problem został rozwiązany zmieniając

android:layout_margin="@dimen/lateral_margin" > 

z:

android:padding="@dimen/lateral_margin" > 

Wydaje androidom 2.3.3 i dolna były obliczania margines inaczej niż android 4 i większe. Teraz wszyscy zachowują się w ten sam sposób.

W twoim przypadku być może ustawienie marginesu czarnych układów jako dopełnienia może pomóc.