将CardView的高程重置为默认值(休息时间)

时间:2015-08-29 15:31:12

标签: android android-resources android-theme android-styles android-cardview

我想更改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)

1 个答案:

答案 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