在较低的api级别中,translationZ的替代方法是什么?

时间:2016-10-27 19:50:49

标签: android

我正在使用translationZ将imageview放在相对布局之上。但它似乎是android:translationZ =“2dp”在api级别21之下无法正常工作。这是替代方案吗?

PFB代码:

   RelativeLayout layout_main = (RelativeLayout) findViewById(R.id.layout_main);
  ImageView  myimage= (ImageView) view.findViewById(R.id.myimage);
      Picasso.with(getContext()).load("image url")
                    .error(getContext().getResources().getDrawable(R.mipmap.ic_business_black_48dp))
                    .resize(200,200).centerInside()
                    .placeholder(getContext().getResources().getDrawable(R.mipmap.ic_business_black_48dp)).into(myimage);
                layout_main.bringToFront();


   <RelativeLayout
                android:id="@+id/layout_main"
                android:layout_width="90dip"
                android:layout_height="90dip"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="70dp"
                android:background="#ededeb"
                android:translationZ="3dp"
                android:elevation="20dp">

                <ImageView
                    android:id="@+id/myimage"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="#00000000"
                    android:src="@mipmap/ic_business_black_48dp" />
            </RelativeLayout>

2 个答案:

答案 0 :(得分:3)

API 21内置了view.setElevation(float)

使用ViewCompat.setElevation(view, float);来实现向后兼容

更多方法ViewCompat.setZ(v, pixels)ViewCompat.setTranslationZ(v, pixels)

答案 1 :(得分:1)

你可以要求把它带到前面(类似于How to bring view on front of everything?),使用View.bringToFront(),但这不会为你渲染阴影。早期的操作系统版本没有阴影的原生支持,所以如果你迫切需要它,你需要解决它。