android 将CardView的标高重置为默认值(静止标高)

rmbxnbpk  于 2022-12-09  发布在  Android
关注(0)|答案(1)|浏览(173)

我想更改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中尚未更改的值。材料设计主题的android.support.v7.cardview:cardElevation是否有资源参数(或样式)?
(It使用LogCat时,CardView的静止标高似乎约为2.66。实际上,在官方材质设计指南中,Card的静止标高显示在2dp和3dp之间。)

nlejzf6q

nlejzf6q1#

我已设法找到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**,这在官方材料设计指南中有描述。而**getDimension返回的值在px**中,这取决于每个设备。因此,我的设备是Nexus7 2012,其屏幕密度为tvdpi(mdpi为x1.33),返回值计算为2dp x 1.33 = 2.66px

相关问题