2017-01-20 1 views
0

Я пытаюсь создать макет, который будет использоваться в качестве фрагмента. Тем не менее, это не делает так, как я намереваюсь, когда он накачивается как фрагмент. Когда я использую его в качестве основного макета для приложения, она работает просто отлично:Формат Android отличается при использовании в качестве фрагмента

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="net.fazjaxton.apptest.MainActivity"> 


    <android.support.v7.widget.Toolbar 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:theme="?attr/actionBarTheme" 
     android:minHeight="?attr/actionBarSize" 
     android:layout_alignParentBottom="true" 
     android:id="@+id/toolbar" /> 
</RelativeLayout> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

Application picture

Однако, когда я использую тот же макет, что и фрагмент, панель инструментов на дно визуализируется от нижней части экрана:

fragment_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <!-- 
    tools:context="net.fazjaxton.apptest.MainActivity"> 
    --> 


    <android.support.v7.widget.Toolbar 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:theme="?attr/actionBarTheme" 
     android:minHeight="?attr/actionBarSize" 
     android:layout_alignParentBottom="true" 
     android:id="@+id/toolbar" /> 
</RelativeLayout> 

activity_main.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:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="net.fazjaxton.fragtest.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/appbar_padding_top" 
     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:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/AppTheme.PopupOverlay"> 

     </android.support.v7.widget.Toolbar> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

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

MainActivity.java

public class MainActivity extends AppCompatActivity { 
    private SectionsPagerAdapter mSectionsPagerAdapter; 
    private ViewPager mViewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); 
     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

     mViewPager = (ViewPager) findViewById(R.id.container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    public static class PlaceholderFragment extends Fragment { 
     public PlaceholderFragment() { } 

     public static PlaceholderFragment newInstance() { 
      return new PlaceholderFragment(); 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      return inflater.inflate(R.layout.fragment_main, container, false); 
     } 
    } 

    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     public SectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return PlaceholderFragment.newInstance(); 
     } 

     @Override 
     public int getCount() { return 1; } 
     @Override 
     public CharSequence getPageTitle(int position) { return "title"; } 
    } 
} 

Fragment picture

(Я использую два разных базовых проекта от студии android. Первая - это базовая деятельность, вторая - Tabbed Activity)

У меня возникли проблемы с пониманием, почему это так. Нужно ли мне компенсировать ручную панель инструментов в операции с вкладками иначе, чем панель инструментов по умолчанию в основной деятельности?

+0

Пожалуйста, объясните, почему вы помещаете панель инструментов во Фрагмент –

+0

, уверены ли вы, что тот же самый фрагмент появляется? просто поместите некоторый вид (textview и т. д.) в файл fragment_main.xml и посмотрите, является ли он одним и тем же фрагментом? –

+0

@junaidhafeez - Я протестировал и это так. Я также установил нижнюю границу на панели инструментов, что заставляет ее отображаться выше на экране. Вот как я знаю, что он отображается снизу (без поля). – FazJaxton

ответ

0

У вас есть два вида с идентификатором R.id.toolbar: один в activity_main.xml, других в fragment_main.xml. Это может вызвать проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^