我有一个ListView,每个列表项我希望它在它下面显示一个阴影.我正在使用Android Lollipop的新高程功能在View上设置一个我想要投射阴影的Z,并且我已经使用ActionBar(技术上是Lollipop中的工具栏)有效地做到了这一点.我正在使用Lollipop的高程,但由于某种原因,它没有在列表项下显示阴影.以下是每个列表项的布局设置方式:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
style="@style/block"
android:gravity="center"
android:layout_gravity="center"
android:background="@color/lightgray"
>
<RelativeLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:elevation="30dp"
>
<ImageView
android:id="@+id/documentImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/alphared"
android:layout_alignParentBottom="true" >
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="light"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingBottom="4dp"
android:singleLine="true"
android:text="New Document"
android:textSize="27sp"/>
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentPageCount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="italic"
android:paddingLeft="16dp"
android:layout_marginBottom="16dp"
android:text="1 page"
android:textSize="20sp"/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
但是,这是它如何显示列表项,没有阴影:
我也试过以下无济于事:
根据我的理解,在预览阶段的早期,似乎没有办法只在CardView没有Java的黑客攻击的情况下在XML中设置高程.既然官方发布已经发布,有没有办法在XML中执行此操作而无需编写Java代码来设置高程?
我试过card_view:cardElevation没有效果.我曾经想过当我使用5.0的模拟器时一切都很好.但是现在我在我的实际设备上使用正式版本,我的所有内容都CardView消失了
Pre Lollipop,效果很好.
这是我的完整xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="match_parent"
android:id="@+id/cv1"
card_view:cardElevation="4dp"
android:layout_margin="6dp"
card_view:cardCornerRadius="3dp"
android:layout_height="match_parent">
Run Code Online (Sandbox Code Playgroud) android android-appcompat android-cardview android-elevation
谷歌已经表明,海拔效果显示在棒棒糖一些不错的方式在这里.
android:elevation="2dp"
Run Code Online (Sandbox Code Playgroud)
按钮,
android:stateListAnimator="@anim/button_state_list_animator"
Run Code Online (Sandbox Code Playgroud)
如何在没有第三方库的情况下模仿前Lollipop版本的高程效果?
我正在尝试"android: elevation ="在我的应用程序中使用,但一旦我运行它没有出现在Android 4.1.2的设备中
gradle这个
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.alvaro.proyectocaronte"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}
Run Code Online (Sandbox Code Playgroud)
layout.xml
<RelativeLayout
android:layout_width="1100dp"
android:layout_height="fill_parent"
android:background="@drawable/rounded_corner"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="93dp"
android:layout_marginEnd="93dp"
android:elevation="3dp"/>
Run Code Online (Sandbox Code Playgroud)
也许我没有为棒棒糖前装置正确编制Lollipop,有什么建议吗?
如果您需要查看代码的其他部分,我将编辑问题
谢谢
由于某种原因,高程属性似乎不适用于材料设计支持库中的新TabLayout.有任何想法吗?XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:elevation="6dp" />
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在父片段中像这样连接:
ViewPager viewPager = (ViewPager) view.findViewById(R.id.view_pager);
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout);
AppPagerAdapter appPagerAdapter = new AppPagerAdapter(getChildFragmentManager());
viewPager.setAdapter(appPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
Run Code Online (Sandbox Code Playgroud)
图片:

活动有一个工具栏,但这不在片段之外,不应影响tablayout有阴影的能力:
相关活动xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bluckapps.appinfomanager.ui.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:elevation="6dp"
android:minHeight="?attr/actionBarSize"
tools:ignore="UnusedAttribute" />
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 我在活动的底部使用了framelayout,为了显示片段上的阴影效果,我添加了android:elevation.但阴影效果只出现在底部不在顶部,任何人都可以给我一些建议吗?
<FrameLayout
android:id="@+id/bottom_container"
android:background="#00737f"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="bottom"
android:elevation="4dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="50dp"/>
Run Code Online (Sandbox Code Playgroud) android shadow material-design android-elevation android-framelayout
ImageView的高程不起作用.我在XML中声明了ImageView,如下所示:
<ImageView
android:id="@+id/image"
android:layout_width="100dp"
android:layout_height="50dp"
android:elevation="10dp"
android:src="@drawable/youtube" />
Run Code Online (Sandbox Code Playgroud)
我还应该做些什么来提升ImageView的正常工作?
有AppBarLayout没有办法让没有阴影并保持其高度?
<android.support.design.widget.AppBarLayout
app:elevation="0dp">
Run Code Online (Sandbox Code Playgroud) android shadow android-toolbar android-elevation android-appbarlayout
我尝试了两种功能,但我不知道为什么我应该使用提升而不是翻译或反之.
当我使用它们时都会产生阴影.
我应该同时使用(具有相同的价值)?我应该只使用一个?
先感谢您!
编辑:
我进行了视觉比较,可以清楚地看到它:

我得到的结论是(至少在0到16 dp的范围内)其中一个是可有可无的.
我看到同样的阴影在8对8和16对16和16和8 + 8相同的阴影.
但我没有一个伟大的愿景,你觉得谁呢?
这个问题在很多时候被问过,但我仍然找不到解决这个问题的好方法.
为什么我需要这样做?好吧,因为项目我和我的团队开发有iOS风格.
我尝试了什么?
那么有没有办法改变CardView的阴影颜色,只需对所有布局文件进行最少的编辑,并在视图外部绘制阴影,就像原始的CardView一样?
android shadow android-view android-cardview android-elevation