Câu hỏi Android AppCompat 21 Độ cao


Có cách nào để thêm độ cao vào View trong các thiết bị có kẹo trước mà không gói chúng trong CardView?


69
2017-11-04 05:51


gốc


Tham khảo ở đây: android-developers.blogspot.in/2014/10/… Họ đã nói nó cho thanh Action như getSupportActionBar (). SetElevation (0). Vì vậy, hãy thử tương tự cho chế độ xem thẻ của bạn. - AruLNadhaN
Tôi không muốn thêm độ cao vào CardView. Tôi muốn thêm nó vào bất kỳ View nếu có thể. - Eliezer


Các câu trả lời:


ViewCompat.setElevation(View, int) hiện không tạo ra miếng chêm.

Cách duy nhất để mô phỏng độ cao ngay bây giờ là áp dụng bóng trước v21. Xác định kiểu / bố cục / drawable của bạn trong values và ghi đè nó trong values-v21. Đối với các nút, tôi sử dụng ghi đè kiểu. Đối với bố trí, tôi thường đi để ghi đè tham chiếu (sử dụng @null để loại bỏ một drawable).

Hy vọng rằng trong tương lai một bản cập nhật cho thư viện hỗ trợ sẽ thêm miếng chêm.

Chuỗi màu đỏ theo dõi cập nhật đã nói.

Chỉnh sửa

Cái mới thư viện thiết kế hỗ trợ thực sự tạo ra miếng chêm cho nút hành động nổi.


70
2017-11-05 00:18



Cảm ơn. Chuỗi reddit đó có một số thông tin tuyệt vời. - Eliezer
Điều này vẫn không hoạt động đúng không? Chính xác thì 'shims' :) là gì? - Daniel Wilson
@DanielWilson một shim là một cách giải quyết (en.wikipedia.org/wiki/Shim_(computing)). Vì bóng tối có nguồn gốc trong 5.0, bạn cần một shim cho <5.0 - Derk-Jan
Rất thú vị thankyou :) Hy vọng rằng các kỹ sư sẽ không từ bỏ điều này cho các thiết bị cũ hơn. Tôi không muốn tự làm điều đó: D - Daniel Wilson
@DanielWilson cũng phải trung thực: Material Design là một phần của thế hệ 5.0+. Nó không thực sự làm cho "ý nghĩa" có nó trước kẹo que. Tôi nghĩ rằng và không có renderthread là lý do tại sao nó sẽ không được hỗ trợ. - Derk-Jan


Đây là ví dụ về cách thêm bóng bên dưới Toolbar trên các thiết bị trước kẹo:

enter image description here

Bố cục phải là:

<RelativeLayout
    android:id="@+id/toolbar_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:animateLayoutChanges="true"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />

    <View
        android:id="@+id/toolbar_shadow"
        android:layout_width="match_parent"
        android:layout_height="@dimen/toolbar_shadow"
        android:layout_below="@id/toolbar"
        android:background="@drawable/toolbar_dropshadow" />
</RelativeLayout>

Và cái bóng là:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <gradient
        android:angle="90"
        android:endColor="#88444444"
        android:startColor="@android:color/transparent" />

</shape>

63
2018-06-12 15:12



bạn có thể cung cấp thông tin về - android: layout_height = "@ dimen / toolbar_shadow" không - Ranjith Kumar
nó là kích thước của bóng tối, cao hơn giá trị, nhiều hơn "nâng lên" thanh công cụ là - thiagolr
Theo giá trị được chọn từ trang web thiết kế của google, endColor phải là # 45000000. Tuy nhiên, nó phụ thuộc vào nơi giá trị thu được anyway. - Curious Sam
Một giải pháp đơn giản như vậy. Cảm ơn bạn! - B.K.


Tôi đạt được hiệu quả tương tự,

  android:background="@android:drawable/dialog_holo_light_frame"

Sản lượng thử nghiệm của tôi:

enter image description here

tài liệu tham khảo - https://stackoverflow.com/a/25683148/3879847

Cập nhật: Nếu bạn muốn thay đổi màu sắc của thử này drawable @ Irfan câu trả lời

https://stackoverflow.com/a/40815944/3879847


46
2018-06-21 08:40



Tôi đã sử dụng mẹo này cho bộ điều hợp RecyclerView và hoạt động tốt. Cám ơn vì đã chia sẻ! - Alberto Gaona
Làm thế nào để tôi làm điều này cho AlertDialog? Tôi có một phong cách được áp dụng cho hộp thoại vì vậy tôi đã thêm thuộc tính được đề cập ở đó nhưng có vẻ lạ. Có vẻ như tôi đã thêm nhiều trang tính / lớp làm nền. Bất kỳ đầu mối? - cgr
Sử dụng tài nguyên hệ thống như @android: drawable / dialog_holo_light_frame là nguy hiểm, phải không? Một số nhà sản xuất thiết bị di động có thể ghi đè tài nguyên hệ thống, vì vậy tài nguyên này có thể được hiển thị khác nhau trên các thiết bị khác nhau, phải không? - P. Ilyin
Tôi sử dụng tài nguyên này hơn 2 năm .. Tuy nhiên, tôi không nhận được bất kỳ vấn đề .. Nó đang làm việc trong Samsung, Asus, Nexus, moto .. Và Lenovo cũng .. - Ranjith Kumar


Bây giờ bạn có thể sử dụng lược đồ xmlns:app="http://schemas.android.com/apk/res-auto" và app:elevation

<?xml version="1.0" encoding="utf-8"?>
<layout 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">
...

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            app:elevation="5dp">

-2
2017-09-27 15:51



cho chế độ xem phải sử dụng appcompact như 'android.support.v7.widget.AppCompatTextView' - ArMo 372