android - 属性 app:elevation 的不可理解行为
问题描述
我想知道为什么 app 属性中出现这种奇怪的行为:elevation = "0dp" 以及如何解决问题。我使用 androidx 库。工具栏是透明的。影子还在。当我编写一个应用程序时:elevation = "0dp",阴影消失了,但工具栏按钮,包括“后退”按钮,停止响应。
我试图以其他方式解决它:android: elevation = "0dp"
以编程方式设置getSupportActionBar (). setElevation (0);
没有帮助。
布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:background="@color/back_gray">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="200dp"/>
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:background="@color/transparent"
app:popupTheme="@style/AppTheme.PopupOverlay">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageButton
android:id="@+id/iv_like"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@android:color/transparent"
android:src="@drawable/heart_outline"
android:visibility="visible"/>
<ImageButton
android:id="@+id/iv_shared"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@android:color/transparent"
android:src="@drawable/shared"
android:visibility="visible" />
</LinearLayout>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
.....>
<TextView
........./>
<TextView
........../>
</RelativeLayout>
</LinearLayout>
</ScrollView>
</FrameLayout>
片段.java:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate( R.layout.fragment_data, container, false );
toolbar = (Toolbar) rootView.findViewById( R.id.toolbar );
MainActivity activity = (MainActivity) getActivity();
if ( activity != null ) {
activity.setSupportActionBar( toolbar );
// activity.getSupportActionBar().setElevation(0);
activity.getSupportActionBar().setDisplayHomeAsUpEnabled( true );
activity.getSupportActionBar().setHomeButtonEnabled( true );
activity.getSupportActionBar().setDisplayShowTitleEnabled( false );
toolbar.setNavigationOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().onBackPressed();
}
} );
}
}
解决方案
试试下面的代码片段,而不是toolbar.setNavigationOnClickListener
@Override public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == android.R.id.home){
getActivity().onBackPressed();
}
return super.onOptionsItemSelected(item);
}
希望这能解决你的问题。谢谢
推荐阅读
- android - 单选按钮以编程方式设置边距和对齐
- javascript - 将 JSON 对象转换为单个变量
- visual-studio-code - 如何解决 Windows 上的 phpcs 和 vscode 问题
- python-3.x - 无法获取收件箱下的文件夹
- node.js - Fetch 从服务器检索序列化对象。为什么在 fetch 内部检查时它已经反序列化了?
- select - 错误消息:在 hive2.3.3 中使用嵌套选择时“当前上下文不支持 TOK_ALLCOLREF”
- python - 为什么我可以在我的 python 3.6 shell 中访问 gdal 而不是我的 django shell
- java - 我需要帮助从方法更新 main 中的数组
- c - 在某些头文件中声明时,double 类型的 C 函数有时会起作用
- java - Intellij 右键单击“新建”未显示“类”