2015-06-09 14 views
10

Tôi có hai chế độ xem có cùng độ cao cạnh nhau. Hành vi mong muốn của tôi là họ sẽ không phủ bóng lên nhau vì họ có cùng độ cao, tuy nhiên, những gì đang xảy ra là khung nhìn bên trái, tạo ra một cái bóng ở bên phải. Chúng không có cùng kích cỡ nên tôi không thể đặt chúng ở chế độ xem khác và áp dụng độ cao cho chế độ xem đó.Android - hai chế độ xem có cùng độ cao ngang nhau

Đây có phải là hành vi mong đợi không? Có cách nào làm tròn nó không?

Chỉnh sửa:

Tôi vừa tạo lại với chế độ xem đơn giản hơn, đây là mã. Tôi cũng nhận thấy nó có hành vi mong đợi nếu tôi có chế độ xem trực tiếp trong bố cục và không bao gồm nó như tôi đã làm trong ví dụ này và khi tôi cần nó hoạt động.

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    android:background="@android:color/holo_green_dark"> 

    <LinearLayout 
     android:layout_width="200dp" 
     android:layout_height="200dp" 
     android:background="@android:color/holo_red_dark" 
     android:elevation="24dp"/> 

    <include layout="@layout/test"/> 

</LinearLayout> 

Và đây là bao gồm:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:background="@android:color/holo_red_dark" 
     android:elevation="24dp"/> 

</LinearLayout> 

Và ảnh chụp màn hình:

http://i.imgur.com/bhm1nbI.png

+0

Bạn có thể muốn chụp một ảnh chụp màn hình của hiệu ứng mà bạn đang nhìn thấy , tải nó lên đâu đó và liên kết đến nó từ câu hỏi của bạn, cùng với việc cung cấp bố cục mà bạn đang sử dụng. – CommonsWare

+0

Xin lỗi vì sự chậm trễ, tôi vừa tạo lại sự cố bằng cách sử dụng chế độ xem đơn giản hơn. Nó hoạt động nếu tôi không bao gồm chế độ xem, nhưng đó là cách tôi đang sử dụng chế độ xem trong vấn đề ban đầu của mình. –

+2

Nếu bạn đang nói rằng '' là vấn đề của bạn, thì tôi nghi ngờ giải pháp là để tránh ''. Ví dụ, có lẽ bạn có thể tạo một 'View' /' ViewGroup' tùy chỉnh có hai khung nhìn của bạn. – CommonsWare

Trả lời

1

Xem hệ thống phân cấp bạn có:

enter image description here

Vì vậy, bạn đã áp dụng độ cao cho 13, không phải là anh chị em ruột. Rõ ràng, nếu một lượt xem cao hơn trong hệ thống phân cấp, thì nó sẽ tạo ra một bóng, bất kể các khung nhìn đó có cùng độ cao hay không.

Nếu bạn đã áp dụng độ cao lên 2 thay vì 3, bạn sẽ không xem hiệu ứng đổ bóng.

Vì vậy, nếu bạn chỉ cần thay đổi của bạn test.xml này:

<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:elevation="24dp"> 

    <LinearLayout 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:background="@android:color/holo_red_dark"/> 

</LinearLayout> 

Bạn sẽ nhận được kết quả này:

enter image description here

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