android - popupWindow.setElevation()怎样兼容到API21以下呢
黄舟
黄舟 2017-04-18 09:14:05
0
1
619

项目里有个地方用到了PopupWindowsetElevation() 但是这个方法只支持API21以上,我看有个PopupWindowCompat,但是里面好像没有什么有用的方法,请问应该如何兼容API21以下的版本呢

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(1)
刘奇

Tiada kaedah biasa, tetapi ia masih boleh dicapai melalui refleksi Java Namun, walaupun ia dilaksanakan, kesan elevasi tidak dapat dihasilkan pertama:

public class PopupWindow {
    ... ...
    private View mBackgroundView;

    public void setElevation(float elevation) {
        mElevation = elevation;
    }

    private void preparePopup(WindowManager.LayoutParams p) {
        ... ...
        // The background owner should be elevated so that it casts a shadow.
        mBackgroundView.setElevation(mElevation);
    }
}

Daripada kod di atas, kita boleh tahu bahawa selagi kita memperoleh mBackgroundView melalui refleksi dan kemudian memanggil ViewCompat.setElevation(View, float), kerja itu selesai, bagaimanapun, kerana versi yang lebih rendah tidak mempunyai ketinggian atribut, panggilan di atas hanyalah pemprosesan keserasian untuk memastikan ia tidak ranap.

Cara pemikiran lain:

  1. Versi tinggi dengan menetapkan ketinggian

  2. versi yang lebih rendah diluluskanBackground Drawable

p.s. Mengapa tidak gunakan kesemuanya Background Drawable

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan