2013-04-22 24 views
10

Tôi đang phải đối mặt với một vấn đề xa lạ trong dự án của tôi khi tạo ra một thiết kế xml đơn giản như sau:khác biệt trong thiết kế bố trí android giữa các phiên bản 2.3.3 và 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"/> 

Bây giờ thấy sự khác biệt , đây là quan điểm trong 4.2.2:

2.3.3 version

Và một trong 2.3.3:

enter image description here

sẽ đánh giá cao nếu ai đó có thể giúp tôi với nó. nhờ

+0

vì tò mò tại sao bạn đang cố đặt layout_gravity thành cả trái và center_vertical? – FoamyGuy

+0

Uhm ... Vậy sự khác biệt là gì? Bạn có muốn nó được "holofied"? – Ahmad

+1

@Ahmad thanh màu đen (lề có lẽ) nằm ở hai bên đối diện – FoamyGuy

Trả lời

3

Nó hoạt động, nếu bạn thay đổi nó như thế này:

<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> 

(. Tôi nghĩ rằng tôi biết lý do tại sao nó cư xử như thế này, hãy để tôi chỉ cần kiểm tra một cái gì đó tôi sẽ thêm một lời giải thích sau này)

+0

Xin chào Ahmad, điều này chỉ giải quyết được cách bố trí ở đây được thực hiện để hỏi câu trả lời thực sự. trong dự án của tôi, tôi có bố trí rất phức tạp mà không thể thay đổi theo cách này. chờ đợi lời giải thích của bạn. thanks –

+0

@UdiOshi Xin lỗi, giả định của tôi là sai (Hoặc ít nhất tôi không thể tìm thấy bất kỳ bằng chứng nào để hỗ trợ nó). Tuy nhiên, đặt 'layout_gravity' thành bố cục cấp cao nhất với bất kỳ trọng lực nào sửa chữa nó. – Ahmad

+0

cảm ơn Ahmad, nhưng trong bố cục phức tạp khác của tôi nếu tôi sẽ đặt trọng lực bố trí nó sẽ phá hủy mọi thứ: ( –

0

tôi đã phải đối mặt với vấn đề tương tự, trong trường hợp của tôi, tôi có một cái gì đó giống như

<?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> 

tôi vấn đề này đã được giải quyết thay đổi

android:layout_margin="@dimen/lateral_margin" > 

với:

android:padding="@dimen/lateral_margin" > 

Dường như android 2.3.3 và thấp hơn đã được tính toán biên độ khác biệt so với Android 4 và lớn hơn. Bây giờ tất cả đều hành xử theo cùng một cách.

Trong trường hợp của bạn, có thể đặt lề bố trí màu đen khi phần đệm có thể hữu ích.

Các vấn đề liên quan