我正在开发一个应用程序,但是在此页面上遇到了一个小的视觉故障,其中横幅显示在主视图下方。

java - 为什么横幅显示在主 View 下?-LMLPHP http://i.stack.imgur.com/IzogQ.png

content.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.ben.trimpsapp.DrawerMenu">


    <RelativeLayout
..../>
</RelativeLayout>


activity.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <android.support.design.widget.CoordinatorLayout 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"
        android:fitsSystemWindows="true"
        tools:context=".CalcActivity">

        <include
            layout="@layout/app_bar_drawer_menu"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <include
            layout="@layout/content_perk_calc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="35dp" />

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_drawer_menu"
        app:menu="@menu/activity_drawer_menu_drawer" />

</android.support.v4.widget.DrawerLayout>


activity.java

package com.example.ben.trimpsapp;

import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
 * Created by Ben on 07/07/2016.
 */
public class CalculatorActivity extends MainActivity {


    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_perk_calc);


        EditText editText;
        editText = (EditText) findViewById(R.id.input);
        editText.setGravity(Gravity.CENTER_HORIZONTAL);
        Button button = (Button) findViewById(R.id.submit);
        button.setText(String.valueOf("kek"));
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                calcMain();
            }
        });
        menu();
    }

    public void calcMain() {


        double cost = 1;
        double multiplier = 2;
        int count = 0;

        EditText editText = (EditText) findViewById(R.id.input);
        ;
        double helium = Integer.parseInt(editText.getText().toString());

        while (helium >= cost) {

            helium = helium - cost;
            cost = cost * multiplier;
            count++;

        }

        int remainder = (int) helium;

        final TextView coordinatedCount = (TextView) findViewById(R.id.textView0);
        coordinatedCount.setText(String.valueOf(count));
        final TextView remainderCount = (TextView) findViewById(R.id.textView11);
        remainderCount.setText(String.valueOf(remainder));

    }


}


对于上下文,menu();运行标准的android绘制菜单,其修改之处在于它是要运行的方法,而不是在onCreate();中完成

除此以外,我认为我没有其他方法可以修改布局/外观。

如果解决方案需要任何其他代码或信息,我很乐意提供。

编辑:

建议解决方案的边距错误

java - 为什么横幅显示在主 View 下?-LMLPHP

尝试解决方案的错误下方的布局

java - 为什么横幅显示在主 View 下?-LMLPHP

最佳答案

activity.xml中,您永远不会将特权计算布局设置为菜单下方。我在这里更改了一些代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <android.support.design.widget.CoordinatorLayout 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"
        android:fitsSystemWindows="true"
        tools:context=".CalcActivity">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/app_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay">

            <include
                layout="@layout/app_bar_drawer_menu"
                android:id="@+id/drawer_menu"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

        </android.support.design.widget.AppBarLayout>

        <FrameLayout
            android:id="@+id/frameLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/app_bar">

            <include
                layout="@layout/content_perk_calc"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_behavior="@string/appbar_scrolling_view_behavior" />

        </FrameLayout>

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_drawer_menu"
        app:menu="@menu/activity_drawer_menu_drawer" />

</android.support.v4.widget.DrawerLayout>


希望这可以帮助!

编辑:
因此,我检查了一些其他默认代码的布局,并想出了另一种可行的方法。我将您的布局包围在FrameLayout中,然后将菜单布局放入AppBarLayout内。我通常在使用Android工具栏时使用它,因此我认为这应该可行。另外,请注意,您的content.xml文件的宽度和高度设置为“ match_parent”。这也可能是问题的根源。

编辑#2:
在这种情况下,contentLayout.perk_calc的FrameLayout中仅缺少一行代码。缺少的代码是:app:layout_behavior="@string/appbar_scrolling_view_behavior"。这样就可以将他的布局布置在屏幕顶部栏的下方。该代码已被编辑并放置在上面的代码中。

08-26 01:24