我注意到当我在xml中使用elevation属性并将其设置为4dp时,我得到一个正常的阴影.当我在java中使用setElevation(4)时,我得到的阴影比xml属性少.我该如何解决这个问题?
我想在Lickipop设备上看到的KitKat设备上我的工具栏上显示相同的高程效果.以下是KitKat和Lollipop设备的屏幕截图.我已经提到了这个链接,但我的问题还没有解决.
棒棒糖装置:
Kitkat设备:
ContentMain.xml
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.global.market.checkinternet.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.AppBarLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable"
android:background="#3F51B5"
style="@style/MyCustomTabLayout"
app:tabTextColor="#ffffff"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
app_bar_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true"
tools:context="com.global.market.MainActivity">
<include layout="@layout/content_main" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud) 我有一个ViewPager正在使用的PageTransformer.每当我滚动时,PageTransformer我ViewPager都会使用它为我内部卡片的高度设置动画.这是代码:
mViewPager.setPageTransformer(false, new ViewPager.PageTransformer() {
@Override
public void transformPage(View page, float position) {
View card = ((ViewGroup)page).getChildAt(0);
CardView cardView = (CardView) card;
float absoluteValue = Math.abs(position);
if (absoluteValue < 1.3f) {
float scale = 1.3f - absoluteValue;
float scaleElevation = scale * 10f;
cardView.setCardElevation(scaleElevation);
//cardView.setElevation(scaleElevation);
Log.d(TAG, "scaleElevation: " + scaleElevation + ", position: " + position);
}
}
});
Run Code Online (Sandbox Code Playgroud)
非常坦率的.现在,当你滚动时,使用定义的比例因子和滚动中的位置滚动高程"动画".但是,当您完成滚动到新页面时,会出现一种与阴影相关的"捕捉"效果.
这是一个清晰显示问题的视频:https://gfycat.com/FlakyWarlikeEgg
那么这里发生了什么,解决方案是什么?
android android-viewpager android-pagetransformer android-cardview 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" …Run Code Online (Sandbox Code Playgroud) 我在片段之间使用动画:
从左侧滑入:
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="600"
android:propertyName="x"
android:valueFrom="2000"
android:valueTo="0"
android:valueType="floatType"
android:fillAfter="true"/>
</set>
Run Code Online (Sandbox Code Playgroud)
从右侧滑入:
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="600"
android:propertyName="x"
android:valueFrom="0"
android:valueTo="-400"
android:valueType="floatType"/>
</set>
Run Code Online (Sandbox Code Playgroud)
该动画将前一个片段向左移动,而新片段从右移。我将其与片段事务一起使用。
transaction.setCustomAnimations(R.animator.slide_in_from_left,R.animator.slide_in_from_right);
Run Code Online (Sandbox Code Playgroud)
当新片段出现时,我遇到了麻烦,他将其滑到旧片段的下面,为解决此问题,我在新片段上加了一个标高,但我想在21以下使用API解决方案。是否有可能将新片段强制在较旧的片段
我正在尝试制作一个使用高程阴影的按钮,背景图像是我用gmail png登录的.该按钮包含在相对布局中.无论我尝试做什么,高程都不会显示.我尝试过其他论坛问题的解决方案而没有工作.
这是我的按钮代码
<Button
android:id="@+id/google"
android:layout_width="270dp"
android:layout_height="38dp"
android:layout_marginTop="30dp"
android:layout_centerHorizontal="true"
android:background="@drawable/google"
android:elevation="10dp"
android:layout_below="@id/slogan"/>
Run Code Online (Sandbox Code Playgroud)
谷歌drawable是我从Adobe XD导出的png图像.有人可以给我一个关于我做错的指针吗?谢谢.
另外,我意识到,如果我将按钮的背景设置为android:color/white,则会出现阴影.所以我认为问题是png可绘制的?高程不适用于png图像吗?有解决方法吗?
我正在生成视图的位图,以将其显示为地图上的标记.它工作正常,但我面临的问题是视图的高度没有显示.
private Bitmap getMarkerBitmapFromView(View view) {
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
//view.buildDrawingCache();
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Bitmap returnedBitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
/*canvas.drawColor(Color.WHITE, PorterDuff.Mode.SRC_IN);
Drawable drawable = view.getBackground();
if (drawable != null)
drawable.draw(canvas);
*/
view.draw(canvas);
return returnedBitmap;
}
Run Code Online (Sandbox Code Playgroud) android bitmap google-maps-markers android-canvas android-elevation
免责声明:我使用的是 Xamarin.Android。
我创建了一个视图,设置了它的高度,然后将它添加到我的主布局中。当我触发事件时,视图成功添加到布局中,但没有任何高程阴影。
这是我正在使用的内容:
以编程方式添加的视图:
public class TooltipTest : FrameLayout
{
private Context context;
private ShapeDrawable box;
private View carrot;
private string message;
public TextView TooltipText
{
get;
private set;
}
public TooltipTest(Context context, string message) : base(context)
{
this.context = context;
this.message = message;
Initialize();
}
private void Initialize()
{
CreateText();
}
private void CreateText()
{
int paddingTopBottom = 30;
int paddingLeftRight = 27;
TooltipText = new TextView(context);
TooltipText.Text = message;
TooltipText.SetTextColor(new Color(ContextCompat.GetColor(context, Resource.Color.tooltipText)));
TooltipText.SetTextSize(ComplexUnitType.Sp, 14f);
TooltipText.SetPadding(paddingLeftRight, paddingTopBottom, paddingLeftRight, …Run Code Online (Sandbox Code Playgroud) 我目前正在开发 v22 的应用程序并使用以下库:
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:support-v4:22.2.1'
compile 'com.android.support:design:22.2.1'
Run Code Online (Sandbox Code Playgroud)
我只有一个名为HomeActivity 的活动,里面有一个导航抽屉。这是activity_home.xml布局:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.ActionBar" />
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="start"
app:menu="@menu/menu_navigation"/>
Run Code Online (Sandbox Code Playgroud)
因此,每次我从导航抽屉中选择一个项目时,我都会@+id/content_frame用一个新的 Fragment替换 FrameView ,如下所示:
int id = menuItem.getItemId();
switch (id)
{
case R.id.gazzette:
fragmentManager.beginTransaction()
.replace(R.id.content_frame, new ListViewFragment())
.commit();
drawerLayout.closeDrawers();
break;
case R.id.concorsi: …Run Code Online (Sandbox Code Playgroud) android fragment material-design android-elevation android-tablayout
在我的 androidManifest 中将硬件加速设置为 false 会从我的视图中删除高程..
当硬件加速为 false 时,它会删除提升
当硬件加速为真时,有提升但没有平滑滚动
有什么办法可以解决这个问题,我的应用程序中需要这两样东西..
android android-layout android-view android-activity android-elevation