将 CardView Elevation 重置为默认值(静止海拔)

Resetting CardView's Elevation to the default value (resting elavation)

我想更改 CardView 的海拔并稍后重新设置。

目前,我将海拔的默认值(称为 静止海拔)保留为 FragmentonCreateView 中的字段值。稍后当我想重置时,用 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 中尚未更改的值. Material设计主题的android.support.v7.cardview:cardElevation是否有资源参数(或样式)?

(好像CardView的静止高程是2.66和LogCat。实际上,在官方Material Design Guide中, Card 的静止高度显示在 2dp 和 3dp 之间。)

我找到了 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 returns px 中的值取决于设备。所以我的设备是 Nexus7 2012,其屏幕密度为 tvdpi(mdpi 为 x1.33),返回值计算为 2dp x 1.33 = 2.66px.