2016-04-29 16 views
0

Navigation Drawerでアプリケーションを作成しました。私は、画面の下部にタブを置きたいHomeFragmentになりましこの要素をツールバーに配置する方法は?

public class MenuActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener 
{ 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_menu); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) 
    { 
     public void onDrawerOpened(View view) 
     { 
      super.onDrawerOpened(view); 
     } 
     public void onDrawerClosed(View v) 
     { 
      super.onDrawerClosed(v); 
     } 
    }; 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    onNavigationItemSelected(navigationView.getMenu().getItem(0)); 
    navigationView.setNavigationItemSelectedListener(this); 
} 

public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.menu, menu); 
    return true; 
} 

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    int id = item.getItemId(); 

    if (id == R.id.action_settings) 
    { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 


public boolean onNavigationItemSelected(MenuItem item) { 

    Fragment fragment = null; 
    String title = null; 
    int id = item.getItemId(); 
    Class fragmentClass=null; 

    if (id == R.id.Home) 
    { 
     fragmentClass = HomeFragment.class; 
     title="Home"; 

    } 
    else if (id == R.id.Profile) 
    { 
     fragmentClass= ProfileFragment.class; 
     title="Profile"; 
    } 
    try { 
     fragment = (Fragment) fragmentClass.newInstance(); 
    } catch (InstantiationException e) { 

     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 


    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.content_frame,  fragment).commit(); 


    if (getSupportActionBar() != null) 
    { 
     getSupportActionBar().setTitle(title); 
    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 


    return true; 
} 

: は私の活動では、私はこのコードを置きます。だから私はこのコードを置く:

public class HomeFragment extends Fragment { 


public static TabLayout tabLayout; 
public static ViewPager viewPager; 
public static int int_items = 3 ; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View inflatedView = inflater.inflate(R.layout.fragment_home, null); 


    tabLayout = (TabLayout) inflatedView.findViewById(R.id.tabs); 
    viewPager = (ViewPager) inflatedView.findViewById(R.id.viewpager); 


    viewPager.setAdapter(new MyAdapter(getChildFragmentManager())); 


    tabLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      tabLayout.setupWithViewPager(viewPager); 
     } 
    }); 

    return inflatedView; 

} 

class MyAdapter extends FragmentPagerAdapter { 

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

    /** 
    * Return fragment with respect to Position . 
    */ 

    @Override 
    public Fragment getItem(int position) 
    { 
     switch (position){ 
      case 0 : return new SearchFragment(); 
      case 1 : return new CardFragment(); 
      case 2 : return new MapFragment(); 
     } 
     return null; 
    } 

    public int getCount() { 

     return int_items; 

    } 

をしかし、最終的に私はこの結果を得る:

enter image description here

私はこれをしたい:

  1. ツールバー
  2. でこのtablayoutを置きますこれを 画面の一番下に置く

どうすればいいですか?

答えて

1

TabLayoutを画面の下部に表示する場合は、実際にツールバーに配置する必要はありません。その断片に特有のものなら、それはそこにとどまるべきです。あなたのレイアウトではこれをやってみてください:

<android.support.design.widget.TabLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:layout_gravity="bottom"> 

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

動作するはず親コンテナによっては、その後、あなたはちょうどあなたがそれぞれのタブを処理するために作成ViewPagerにそれをフックアップ。 RelativeLayoutの場合layout_gravityの代わりにalignParentBottomを使用してください。

また、他のアプリをスクロールするときと同じように消したい場合は、app:layout_anchor="@id/items_list"app:layout_anchorGravity="bottom"を入力してスクロールするように振る舞いを付けます。 AppBarLayoutにあることは実際には必要ありません。

また、ベースビューからパディング/マージンを削除します。

関連する問題