这个问题在很多时候被问过,但我仍然找不到解决这个问题的好方法.
为什么我需要这样做?好吧,因为项目我和我的团队开发有iOS风格.
我尝试了什么?
那么有没有办法改变CardView的阴影颜色,只需对所有布局文件进行最少的编辑,并在视图外部绘制阴影,就像原始的CardView一样?
android shadow android-view android-cardview android-elevation
如何摆脱状态栏中的高程?如果我在AppbarLayout中设置应用程序:提升到0dp,状态栏中不再出现提升,也不会低于AppbarLayout.
如何获得AppbarLayout下的高程?
这是我的意思截图:毛茸茸的链接,注意状态栏中的阴影:(
谢谢!
这是一个简单的问题:
我使用新的支持库,它允许我拥有一个工具栏实例,甚至将其设置为活动的actionBar(或使用默认的).
如何自定义工具栏(或默认ActionBar)投射的阴影?
我试过使用"setElevation"(两者都有),但它似乎没有在Android Lollipop上做任何事情.
另外,我找不到如何在Lollipop前版本上自定义阴影.可能有这个API吗?或至少是一个drawable(我没有找到,即使我已经尝试过)?
好的,我已经设法找到了下一件事:
对于Lollipop和pre-Lollipop,当您的活动使用正常的AppCompat主题(例如"Theme.AppCompat.Light")时,阴影应该看起来很好.
但是,当您使用"setSupportActionBar"(并使用适当的主题,例如"Theme.AppCompat.Light.NoActionBar")时,您将遇到阴影的一些问题.
对于pre-Lollipop,你可以在工具栏下面放置一个FrameLayout,它看起来就像用于普通主题的那样,如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:foreground="?android:windowContentOverlay"
android:visibility="@integer/action_bar_shadow_background_visibility" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:text="@string/hello_world" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
您可以使用FrameLayout作为活动的内容,或使用我所做的.您还可以通过为棒棒糖前置整数0和为棒棒糖及以上版本放置2来设置其可见性,就像我使用"action_bar_shadow_background_visibility"一样.
这是一个丑陋的解决方案,但它可以工作,但仅限于前Lollipop版本.
在任何情况下,如果我使用"setSupportActionBar",我仍然无法找到一种方法来为Lollipop显示阴影.我尝试在工具栏和操作栏上使用"setElevation"(在调用"setSupportActionBar"之后立即使用"getSupportActionBar").
我也没有得到如何获得动作栏的标准高度,因为我注意到许多教程说使用"minHeight"作为工具栏.非常感谢这方面的帮助.
谁能帮我这个?
再说一次,为了说清楚,这就是我的要求:
编辑:好的,到目前为止,这是模仿Lollipop的影子:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
layout="@layout/toolbar_action_bar_shadow" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:text="@string/hello_world" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
RES /布局/ …
android android-actionbar android-support-library android-elevation
我想删除ActionBar下方的阴影.
我知道我需要将高程更改为0dp,但我想在主题中执行此操作.
对于Android 4.4-我使用: <item name="android:windowContentOverlay">@null</item>
但Android 5.0有可能吗?
android android-actionbar android-5.0-lollipop android-elevation
我是开发Android的新手,并且在不同平台上开发的概念在每个平台上都有不同的支持功能,这真的让我很头疼.
例如,如果我进入xml文件并进行设置
android:elevation="10dp"
Run Code Online (Sandbox Code Playgroud)
并且它给我的消息"属性提升仅用于API级别21及更高级别(当前最小值为14),并且说它将简单地忽略该属性.这是说它即使我使用它也会完全忽略它一个棒棒糖设备,或者如果我不在Lollipop设备上它只会忽略它?
android android-studio material-design android-5.0-lollipop android-elevation
我有一个布局XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/containor"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff6da"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.vats.vatishs.cardviewprogrammatically.MainActivity">
<FrameLayout
android:id="@+id/card"
android:layout_width="220dp"
android:layout_marginTop="10dp"
android:layout_height="wrap_content">
<TextView
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:text="Hello I am a text View." />
</FrameLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="210dp"
android:background="@drawable/select_delete_chim" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.结果将是框架布局上方的图像视图,但是当我使用下面的xml时,我用CardView替换了框架布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/containor"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff6da"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.vats.vatishs.cardviewprogrammatically.MainActivity">
<android.support.v7.widget.CardView
android:id="@+id/card"
android:layout_width="220dp"
android:layout_marginTop="10dp"
android:layout_height="wrap_content">
<TextView
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:text="Hello I am a text View." />
</android.support.v7.widget.CardView>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="210dp"
android:background="@drawable/select_delete_chim" …Run Code Online (Sandbox Code Playgroud) 我有一个自定义视图,通过使用路径显示星形.此视图按预期工作,但现在我想将其实现转移到新的Google Material建议.
不幸的是elevation取决于凸起的轮廓,我还没有找到解决方案.
您是否知道任何已知的变通方法或任何其他创造性解决方案?

这是我的凹路径:
double outerSize = w / 2;
double innerSize = w / 5;
double delta = 2.0*Math.PI/5.0;
double rotation = Math.toRadians(-90);
double xpos = w/2.0;
double ypos = h/2.0;
mPath = new Path();
mPath.moveTo((float)(outerSize * Math.cos(delta + rotation) + xpos),
(float)(outerSize * Math.sin(delta + rotation) + ypos));
for(int point= 0;point<6;point++)
{
mPath.lineTo((float) (innerSize * Math.cos(delta * (point + 0.5) + rotation) + xpos),
(float) (innerSize * Math.sin(delta * (point + 0.5) + rotation) + …Run Code Online (Sandbox Code Playgroud) android android-custom-view material-design android-5.0-lollipop android-elevation
正如标题所述,我正在尝试将一个CardView放在ScrollView中,但是CardView高程阴影正在被它的父母关闭...
这是布局XML:
<FrameLayout
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=".TestScrollViewActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="128dp"
android:background="?colorPrimary"
android:gravity="bottom"
android:minHeight="?actionBarSize"/>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:clipToPadding="false"
android:paddingBottom="40dp"
android:paddingTop="60dp">
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="4dp"
app:cardBackgroundColor="@android:color/white"
app:cardCornerRadius="0dp">
<LinearLayout
android:layout_width="400dp"
android:layout_height="600dp"
android:orientation="vertical">
</LinearLayout>
</android.support.v7.widget.CardView>
</ScrollView>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
我找到的唯一解决方法是向父ScrollView添加填充或向子CardView添加边距...
有没有选项可以防止这种情况发生而不使用填充/边距?
谢谢.
编辑:
这就是布局在没有在父滚动视图上设置填充的情况下的样子,因为可以看到,左右阴影被切断:

现在,如果将填充添加到父滚动视图侧,则可以正确绘制阴影,如下所示:

所以,我的主要问题是这是实现这一目标的唯一方法吗?或者父视图上有一个标记或配置,可以正确绘制它的子视图?
嗨,我需要在我的标签布局下添加阴影(如在Skype中).
我的活动xml:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="@color/splashGreenTop"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_below="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:elevation="0dp"
android:minHeight="?attr/actionBarSize" />
<FrameLayout
android:layout_width="match_parent"
android:layout_below="@+id/tab_layout"
android:id="@+id/tabContainer"
android:layout_height="match_parent" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
当我添加android:elevation="10dp"到Tablayout时,阴影被添加到底部和顶部..我只需要底部.见图片......
我怎样才能做到这一点 ?提前致谢.
我有两个相同高度的视图.我想要的行为是,他们不会在彼此之间投下阴影,因为他们有相同的高度,然而,正在发生的是左边的视图,在右边投下阴影.它们的大小不同,因此我无法将它们放在另一个视图中并对该视图应用高程.
这是预期的行为吗?有没有办法围绕它?
编辑:
我只是用简单的视图重新创建,这里是代码.我也注意到它有预期的行为,如果我直接在布局中有视图,并且不包括它,因为我在这个例子中做了它,因为我需要它工作.
<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="horizontal"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:background="@android:color/holo_green_dark">
<LinearLayout
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@android:color/holo_red_dark"
android:elevation="24dp"/>
<include layout="@layout/test"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
以下是包括:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@android:color/holo_red_dark"
android:elevation="24dp"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
截图:
