我想更改CardView
的标高,并在以后重新设置。
目前,我将高程的默认值(称为静止高程)保留为Fragment
的onCreateView
中的字段值。以后要重置时,将该值设置为setCardElevation
。
private CardView cardView;
private float restingElevation;
private float pickedUpState = 50.0f;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
cardView = (CardView) view.findViewById(R.id.table_top);
restingElevation = cardView.getCardElevation(); // keep the default
Log.d("elevation", "resting: " + restingElevation);
return view;
}
private void pickUp() {
cardView.setCardElevation(pickedUpState);
}
private void rest() {
cardView.setCardElevation(restingElevation);
}
但是,我想知道是否有任何直接的方法可以将CardView
的标高设置为默认值(静止标高),而不保留onCreateView
中尚未更改的值。材料设计主题的android.support.v7.cardview:cardElevation
是否有资源参数(或样式)?
(It使用LogCat时,CardView
的静止标高似乎约为2.66。实际上,在官方材质设计指南中,Card的静止标高显示在2dp和3dp之间。)
1条答案
按热度按时间nlejzf6q1#
我已设法找到
CardView
的默认高程(静止高程)。那就是**
R.dimen.cardview_default_elevation
。附加检查:
实际上,
R.dimen.cardview_default_elevation
只是2dp**,这在官方材料设计指南中有描述。而**getDimension
返回的值在px**中,这取决于每个设备。因此,我的设备是Nexus7 2012,其屏幕密度为tvdpi(mdpi为x1.33),返回值计算为2dp x 1.33 = 2.66px
。