2016-06-22 15 views
3

Ich habe eine Aktivität, das ist ein Material Design-Schublade, und einige Fragmente, die aus der Aktivität Java-Datei aufgerufen werden, wenn ein Benutzer auf eine Option der Schublade klickt. Das Problem besteht darin, dass das Fragmentlayout die Titelleiste der Aktivität überlappt und den gesamten Bildschirm abdeckt, anstatt innerhalb der Aktivität positioniert zu sein. In der Android Studio Vorschau, ist Fragment Inhalt richtig eingestellt: enter image description hereFragment Layout Überlappungen Aktivität Titelleiste

Aber wenn ich die apk in mein Handy laden, ich sehe etwas wie folgt aus: enter image description here

Hier ist meine Quellcode: - fragment_layout. xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin"> 

    <EditText 
     android:id="@+id/subjectSelector" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="text" 
     android:hint="Write subject initials"/> 

    <Button 
     android:id="@+id/queryButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="end" 
     style="@style/Base.Widget.AppCompat.Button.Borderless" 
     android:text="Search" 
     android:layout_alignBottom="@+id/subjectSelector" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_centerVertical="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/subjectSelector" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 
      <TextView 
       android:id="@+id/subjectName" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"/> 
      <TextView 
       android:id="@+id/subjectTeachers" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"/> 
      <TextView 
       android:id="@+id/subjectDescription" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"/> 
      <TextView 
       android:id="@+id/subjectCredits" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"/> 

     </LinearLayout> 
    </ScrollView> 

</RelativeLayout> 

Drawer.java

public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 
    Fragment newFragment; 
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
    if (id == R.id.nav_timetable) { 
     newFragment = new TimetableMainMenu(); 
    } else if (id == R.id.nav_notifications) { 
     newFragment = new NotificationsMainMenu(); 
    } else if (id == R.id.nav_schedule) { 
     newFragment = new ScheduleMainMenu(); 
    } else if (id == R.id.nav_class_availability) { 
     newFragment = new ClassAvailabilityMainMenu(); 
    } else if (id == R.id.nav_subject_info) { 
     newFragment = new SubjectInfoMainMenu(); 
    } else newFragment = null; 

    if (newFragment != null) { 
     transaction.replace(R.id.main_menu_fragment_container, newFragment); 
     transaction.addToBackStack(null); 
    } else { 
     Toast.makeText(MainMenuActivity.this, "Not implemented yet", Toast.LENGTH_SHORT).show(); 
    } 
    transaction.commit(); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
  • MainMenu.xml (Sorry, ich kann nicht als Code-Format aktualisieren diese)

enter image description here

  • app_bar_main_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<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="com.upc.fib.racopocket.MainMenuActivity"> 

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

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

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

    <include layout="@layout/content_main_menu" /> 



</android.support.design.widget.CoordinatorLayout> 
  • content_main_menu.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <FrameLayout 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/main_menu_fragment_container" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" /> 
    

Wie kann ich dieses Problem beheben?

+1

können Sie Ihre 'app_bar_main_menu.xml' teilen? und alle anderen nachfolgenden Layouts – jitinsharma

Antwort

0

Ich bekam die Antwort, es war nur eine dumme Sache. In der Datei content_main_menu.xml stimmt das Frame-Layout mit dem gesamten Bildschirm überein, sodass ich nur eine marginTop-Aktion von actionBarSize hinterlassen musste. Das ist das neue content_main_menu.xml:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_menu_fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="?attr/actionBarSize"/>