我的工具栏太高,因此看起来很丑陋,并且下面的屏幕被裁剪了,我该如何解决?

时间:2019-07-20 16:56:25

标签: java android material materialdrawer

这是我的工具栏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>

手机上的外观:image 您会看到工具栏太高。 清单:

<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" />

2 个答案:

答案 0 :(得分:0)

尝试将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作为基本布局。

P.S-对于任何将来考虑此问题的人,其他可能的考虑因素是

  • 使用<item name="android:fitsSystemWindows">true</item>
  • 将其设置为主题
  • 将其值设置为false而不是true。这没有逻辑上的意义,但我已经看到人们指出有时会奏效
  • 确保您的android:minHeight="?attr/actionBarSize"中有Toolbar
  • 可能有必要用您的LinearLayout完全替换container_toolbar Toolbar并将fitsSystemWindows设置为true。
  • 使用CoordinatorLayoutDrawerLayout您的基本布局。他们应该以与其他“基本”布局不同的方式处理fitsSystemWindows
  • 考虑多种建议的here
  • 如果其他所有方法都失败了,那么您可以按照official docs的建议重写fitSystemWindows(Rect insets)以获得所需的布局。

答案 1 :(得分:0)

尝试简化您的布局。将工具栏和片段放在LinearLayout内

    <?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">

    <include
        android:id="@+id/mytoolbar"
        layout="@layout/toolbar" />

<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"
        />

</LinearLayout>