Nor*_*rik 6 android android-elevation
我对使用的阴影有问题Elevation.
我的屏幕包含一个ViewPager4个不同的Fragments和一个TabLayout用于导航.第一个和最后一个片段都包含一个RecyclerView用CardView元素填充的片段.每当我在第1页和第4页之间切换时,CardView元素下方的阴影首先出现在它们的位置之外,并在大约半秒钟过后突然进入正确的位置.
这仅在切换中的非相邻片段之间发生ViewPager.如果我按顺序从1到4移动,则不会发生这种情况.
具有Elevation集合的每个其他元素都有这个问题,而不仅仅是CardView.
我的ViewPager实现:
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (NoSwipeViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOffscreenPageLimit(4);
tabLayout.setupWithViewPager(mViewPager);
Run Code Online (Sandbox Code Playgroud)
RecyclerView中使用的CardView之一
<android.support.v7.widget.CardView
style="@style/Custom.CarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardUseCompatPadding="true" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical">
<ImageView
android:id="@+id/post_image"
android:layout_width="match_parent"
android:layout_height="179dp"
android:layout_gravity="center"
android:scaleType="centerCrop"
app:imageUrl="@{photo.avatar_url}"
tools:background="@color/com_facebook_blue" />
<Button
android:id="@+id/edit_item_imageView"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="29dp"
android:layout_height="37dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@android:color/transparent" />
<ImageView
android:id="@+id/image_edit"
android:layout_width="12dp"
android:layout_height="24dp"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:src="@drawable/profile_post_options" />
<TextView
android:id="@+id/textview_comment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/post_image"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:text="@{photo.description}"
android:textColor="@color/v3_primary_gray"
android:textSize="12sp"
android:visibility="@{photo.description.length() > 0 ? View.VISIBLE : View.GONE}"
tools:text="comment"
android:layout_marginBottom="@dimen/margin_bottom_matches"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
CardView唯一的风格cardCornerRadius设置为4dp.
Elevation工作的影子究竟是怎样的?是否需要设置任何特定属性来防止这种情况?或者我可以使用不同的方法来获得相同的阴影Elevation吗?
谢谢你的帮助.
Muh*_*lib -1
我正在努力解决同样的问题并解决了它,但我完全不知道阴影渲染是怎么回事。
当我像这样在视图寻呼机中创建页面时出现了我的问题。
private final List<TestItem> challengeItems;
@Override
public Object instantiateItem(ViewGroup container, int position) {
View pageView = challengeItems.get(position);
container.addView(view);
return view;
}
Run Code Online (Sandbox Code Playgroud)
TestItem 是 LinearLayout 的实现(我使用它作为模板)
公共类 TestItem 扩展 LinearLayout {
int position;
public TestItem(Context context) {
super(context);
init();
}
private void init() {
inflate(getContext(), R.layout.test_card, this);
ButterKnife.bind(this);
}
public void populateChallenge(Challenge challenge) {
}
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
Run Code Online (Sandbox Code Playgroud)
}
当模板视图的膨胀没有给出容器视图组(viewpager 的容器)时,问题就会出现。阴影闪烁的修复方法是
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = LayoutInflater.from(container.getContext()).inflate(R.layout.test_card, **container**, false);
container.addView(view);
return view;
}
Run Code Online (Sandbox Code Playgroud)
我们要加载到 viewpager 中的视图应该在其容器内膨胀。然后只有 ViewPager 转换器才能正确地在阴影上设置动画。
| 归档时间: |
|
| 查看次数: |
942 次 |
| 最近记录: |