Era*_*eth 13 java android android-layout
我的应用程序适用于API 19.所以我不能使用android:elevation.所以我app:在我的布局中提升.
Android XML:android:elevation vs. app:elevation
举个例子 :
<android.support.design.widget.AppBarLayout
android:id="@+id/appBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
app:elevation="5dp">
Run Code Online (Sandbox Code Playgroud)
如何以编程方式更改app:elevation?我可以改变android:elevation但我找不到如何更改app:elevation!
Mas*_*sum 34
尝试使用以下代码
ViewCompat.setElevation(View, int)
Run Code Online (Sandbox Code Playgroud)
按照以下链接.这里展示了如何在棒棒糖前装置上进行升高
接受的答案实际上不起作用.答案应该已经更新.
如果你看看为什么mAppBarLayout.setTargetElevation(0)被弃用.它声明:
@deprecated目标高程现已弃用.AppBarLayout的高程现在通过{@link android.animation.StateListAnimator}控制.此方法现在始终返回0.
因此,要以编程方式设置appbar布局,您只能通过在res文件夹中创建StateListAnimator诸如:appbar_state_unelevated_animatoranimator
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<objectAnimator
android:propertyName="elevation"
android:valueTo="4dp"
android:valueType="floatType"
android:duration="100"/>
</item>
Run Code Online (Sandbox Code Playgroud)
然后将其加载到代码中,如下所示:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
appbar.stateListAnimator = AnimatorInflater.loadStateListAnimator(applicationContext, R.animator.appbar_state_unelevated_animator)
}
Run Code Online (Sandbox Code Playgroud)
如果我没弄错的话,你也可以创建一个StateListAnimator代码,但不要相信我的话.
更新:
根据我设置应用程序的经验:elevation ="//任何DP值//"
应用栏的阴影将会丢失.简单地删除该行以再次获取appbar阴影.
我想提供更新和完整的答案:
switch (state) {
case On:
appBarLayout.setStateListAnimator(AnimatorInflater.loadStateListAnimator(getContext(), R.animator.appbar_elevation_on));
break;
case Off:
appBarLayout.setStateListAnimator(AnimatorInflater.loadStateListAnimator(getContext(), R.animator.appbar_elevation_off));
break;
}
Run Code Online (Sandbox Code Playgroud)
RES\animator 下的 appbar_elevation_on.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="PrivateResource">
<item>
<objectAnimator
android:propertyName="elevation"
android:valueTo="@dimen/design_appbar_elevation"
android:valueType="floatType" />
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
RES\animator 下的 appbar_elevation_off.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="PrivateResource">
<item>
<objectAnimator
android:propertyName="elevation"
android:valueTo="0dp"
android:valueType="floatType" />
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
由于您尝试更改操作栏的高度,因此可以轻松使用此行,该行将适用于API 19
getSupportActionBar().setElevation(0);
Run Code Online (Sandbox Code Playgroud)
或者您点击此链接并查看如何在API 21以下更改Android上的视图高程
| 归档时间: |
|
| 查看次数: |
17395 次 |
| 最近记录: |