这是我的工具栏screen.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/container_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Include your Toolbar -->
<include
android:id="@+id/mytoolbar"
layout="@layout/toolbar" />
</LinearLayout>
<FrameLayout
android:id="@+id/container_body"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1">
<!-- Embed your fragment in a Layout View-->
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.Activities.MenuActivity"
/>
</FrameLayout>
</LinearLayout>
手机上的外观:
您会看到工具栏太高。
表现:
<activity
android:name="com.example.Activities.MenuActivity"
android:label="@string/title_activity_test"
tools:ignore="InnerclassSeparator" />
<activity
Styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
MenuActivity.class
setContentView(R.layout.activity_menu);
Toolbar toolbar = findViewById(R.id.mytoolbar);
setSupportActionBar(toolbar);
Drawer(toolbar,MenuActivity.this,MenuActivity.this);
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle("Аппараты");
}
无效抽屉:
public void Drawer(Toolbar toolbar, Context context, android.app.Activity activity){
DatabaseReference rootRef2 = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef2 = rootRef2.child("users").child(getUid());
ValueEventListener valueEventListener2 = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String email = dataSnapshot.child("account").getValue(String.class);
String Avatar = dataSnapshot.child("Avatar").getValue(String.class);
Long coinsAmount = dataSnapshot.child("coinsAmount").getValue(Long.class);
String coinsView = "Баланс: " + coinsAmount;
if (Avatar.equals("1")) {
avatar = (R.drawable.a1);
}
if (Avatar.equals("2")) {
avatar = (R.drawable.a2);
}
IProfile profile = new ProfileDrawerItem()
.withName(email)
.withEmail(coinsView)
.withIcon(avatar);
AccountHeader headerResult = new AccountHeaderBuilder()
.withActivity(activity)
.withHeaderBackground(R.drawable.account_header_background)
.addProfiles(
profile
)
.build();
result = new DrawerBuilder()
.withActivity(activity)
.withToolbar(toolbar)
.withAccountHeader(headerResult)
.addDrawerItems(
new PrimaryDrawerItem()
.withName("Устройства")
.withIcon(R.drawable.device)
.withIdentifier(1)
)
.addDrawerItems(
new PrimaryDrawerItem()
.withName("Сканер")
.withIcon(R.drawable.scaner)
.withIdentifier(2)
)
.addDrawerItems(
new PrimaryDrawerItem()
.withName("Магазины")
.withIcon(R.drawable.shop)
.withIdentifier(3)
)
.addDrawerItems(
new PrimaryDrawerItem()
.withName("Купоны")
.withIcon(R.drawable.coupons)
.withIdentifier(4)
)
.addDrawerItems(
new PrimaryDrawerItem()
.withName("Архив Купонов")
.withIcon(R.drawable.oldcoupons)
.withIdentifier(5)
)
.withOnDrawerItemClickListener((view, i, iDrawerItem) -> {
if(iDrawerItem.getIdentifier() == 1 && !Activity.equals("Menu")){
Intent intent = new Intent(context,MenuActivity.class);
startActivity(intent);
}
else if(iDrawerItem.getIdentifier() == 2 && !Activity.equals("Scaner")){
Intent intent = new Intent(context,DecoderActivity.class);
startActivity(intent);
}
else if(iDrawerItem.getIdentifier() == 3 && !Activity.equals("Shop")){
Intent intent = new Intent(context,ShopActivity.class);
startActivity(intent);
}
else if(iDrawerItem.getIdentifier() == 4 && !Activity.equals("oldCoupons")){
Intent intent = new Intent(context,oldCouponsActivity.class);
startActivity(intent);
}
return false;
})
.build();
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(false);
Objects.requireNonNull(result.getActionBarDrawerToggle()).setDrawerIndicatorEnabled(true);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
uidRef2.addValueEventListener(valueEventListener2);
}
如何解决它,我们大家都如何?我长期试图修复它,我使用了android:fitsSystemWindows =“ true”,但仍然没有帮助,如果您重新启动活动,则仅在第一次时才将活动切断。我得出的结论是,这可能是由于Firebase引起的,但是如何解决此问题并最终解决此问题,我无法
Toolbar.xml
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:iosched="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar_actionbar"
android:layout_width="match_parent"
android:layout_height="@dimen/materialize_toolbar"
android:background="@color/grey_500"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme" />
最佳答案
尝试将android:fitsSystemWindows="true"
设置为基本线性布局。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
更新-最终可行的答案是使用
CoordinatorLayout
作为基本布局。附言:对于任何将来考虑此问题的人,其他可能的考虑因素是,
使用
<item name="android:fitsSystemWindows">true</item>
将其设置为主题将其值设置为false而不是true。这没有逻辑上的意义,但是我已经看到人们指出有时会奏效
确保您的
android:minHeight="?attr/actionBarSize"
中有Toolbar
可能有必要用您的
LinearLayout
完全替换container_toolbar Toolbar
并将fitsSystemWindows
设置为true。使用
CoordinatorLayout
或DrawerLayout
您的基本布局。他们应该以与其他“基本”布局不同的方式处理fitsSystemWindows
。考虑建议的多种方法here
而且,如果其他所有方法均失败,则可以覆盖
fitSystemWindows(Rect insets)
以获得official docs所建议的所需布局。