我想更改CardView
的高程并稍后重置。
目前,我将高程的默认值(称为静止高程)保留为onCreateView
的{{1}}中的字段值。稍后当我想重置时,请使用Fragment
设置值。
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
中尚未更改的值。对于Material Design主题的onCreateView
,是否有资源参数(或样式)?
(使用LogCat似乎android.support.v7.cardview:cardElevation
的静止高度约为 2.66 。实际上,在官方Material Design Guide中,卡的静止高度指示在2dp和3DP)
答案 0 :(得分:2)
我设法找到CardView
的默认高程(静止高程)。
float elevation = getResources().getDimension(R.dimen.cardview_default_elevation);
Log.d("elavation", "this is the default: " + elevation);
R.dimen.cardview_default_elevation
。
额外检查:
实际上R.dimen.cardview_default_elevation
只是 2dp ,官方Material Design Guide中对此进行了描述。虽然 getDimension
会返回 px 中依赖于设备的值。所以我的设备是Nexus7 2012,其屏幕密度为tvdpi(mdpi为x1.33),返回值计算为2dp x 1.33 = 2.66px
。