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:
Versi tinggi dengan menetapkan ketinggian
versi yang lebih rendah diluluskanBackground Drawable
p.s. Mengapa tidak gunakan kesemuanya Background Drawable
Tiada kaedah biasa, tetapi ia masih boleh dicapai melalui refleksi Java Namun, walaupun ia dilaksanakan, kesan elevasi tidak dapat dihasilkan pertama:
Daripada kod di atas, kita boleh tahu bahawa selagi kita memperoleh
mBackgroundView
melalui refleksi dan kemudian memanggilViewCompat.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:
Versi tinggi dengan menetapkan ketinggian
versi yang lebih rendah diluluskan
Background Drawable
p.s. Mengapa tidak gunakan kesemuanya
Background Drawable