2015-03-05 3 views
2

Я хочу создать ящик для навигации, содержащий вкладки в Android, но я ничего не мог сделать. Я хочу добавить вкладки (категории, избранное) в ящик для навигации. Это возможно?Вкладки Android внутри скользящего выдвижного ящика

(например, ИОС)

enter image description here

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, 
      R.string.app_name, R.string.app_name){ 
     public void onDrawerClosed(View view) { 
      // calling onPrepareOptionsMenu() to show action bar icons 
      // invalidateOptionsMenu(); 

     } 

     public void onDrawerOpened(View drawerView) { 
      // calling onPrepareOptionsMenu() to hide action bar icons 
      //invalidateOptionsMenu(); 
     } 
    }; 

    mDrawerLayout.setDrawerListener(mDrawerToggle); 
    mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN); 

    tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); 
    tabHost.setup(getApplicationContext(), getSupportFragmentManager(), android.R.id.tabcontent); 

    tabHost.addTab(tabHost.newTabSpec("surec").setIndicator("Süreç listesi"), SurecListesiFragment.class, null); 
    tabHost.addTab(tabHost.newTabSpec("bolum").setIndicator("Bölüm listesi"), PhotosFragment.class, null); 

Я не могу переключаться между вкладками. И я не могу использовать какие-либо виджеты в содержимом табуляции. (ListView, кнопки, и т.д ..)

(EDIT: раствор) (LinearLayout: раскладка меню слайдер)

linearLayout.bringToFront(); 
linearLayout.requestLayout(); 
+0

Я не вижу, почему вы не смогли бы. DrawerLayout может содержать только один элемент, но один член может быть FrameLayout или LinearLayout, который содержит вкладки и элементы поиска в первых двух элементах вашего ящика. –

+0

@JaySnayder Я могу переключаться между вкладками с помощью «getTabHost(). SetCurrentTab (2);» не с слушателями. вид ящика не реагирует на какое-либо движение. – settaratici

+0

У меня есть ссылка на этот код. На самом деле я много пробовал, но у меня не было никакого решения, поэтому, если у вас есть ссылка, пожалуйста, поделитесь со мной или кодом –

ответ

1

Я сделал это только вчера.

Это мой макет для основной деятельности с выдвижным ящиком:

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

    <!-- Main layout --> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/app_background" 
     android:orientation="vertical" > 

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

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

    <!-- Slider menu --> 

    <LinearLayout 
     android:id="@+id/preferencesDrawer" 
     android:layout_width="290dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="end" 
     android:background="@color/app_background" 
     android:orientation="vertical" > 

     <android.support.v4.app.FragmentTabHost 
      android:id="@android:id/tabhost" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 

       <TabWidget 
        android:id="@android:id/tabs" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="0" 
        android:orientation="horizontal" /> 

       <FrameLayout 
        android:id="@android:id/tabcontent" 
        android:layout_width="0dp" 
        android:layout_height="0dp" 
        android:layout_weight="0" /> 

       <FrameLayout 
        android:id="@+id/realtabcontent" 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" /> 
      </LinearLayout> 
     </android.support.v4.app.FragmentTabHost> 
    </LinearLayout> 

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

Метод отображения вкладок:

FragmentTabHost tabhost; 

void buildTabs() { 
    tabhost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); 
    tabhost.addTab(tabhost.newTabSpec("locations").setIndicator(getString(R.string.locations)), FragmentPreferencesLocations.class, null); 
    tabhost.addTab(tabhost.newTabSpec("categories").setIndicator(getString(R.string.categories)),FragmentPreferencesCategories.class, null); 
} 

Кроме того, что вам нужно код, чтобы отобразить ящик и настроить вкладки .. .


EDIT:

инициализирую ящик с помощью этого метода (вызвать его в OnCreate):

ActionBarDrawerToggle drawerToggle; 
LinearLayout preferencesDrawer; 
FragmentTabHost tabhost; 
... 

void initDrawer() { 
    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_launcher, R.string.app_name, 
      R.string.app_name) { 
     public void onDrawerClosed(View drawerView) { 
      getSupportActionBar().setTitle(getString(R.string.app_name)); 
      // calling onPrepareOptionsMenu() to show action bar icons 
      invalidateOptionsMenu(); 
      drawerClosed(drawerView); 
     } 

     public void onDrawerOpened(View drawerView) { 
      getSupportActionBar().setTitle(getString(R.string.preferences)); 
      // calling onPrepareOptionsMenu() to hide action bar icons 
      invalidateOptionsMenu(); 
     } 
    }; 
    drawerLayout.setDrawerListener(drawerToggle); 
} 

// Invoked by action bar button 
void clickFilterCategories() { 
    toggleDrawer(preferencesDrawer); 
} 

void toggleDrawer(View drawer) { 
    if (drawerLayout.isDrawerOpen(drawer)) { 
     closeDrawer(drawer); 
    } else { 
     openDrawer(drawer); 
    } 
} 

void openDrawer(View toOpen) { 
    drawerLayout.openDrawer(toOpen); 
} 

void closeDrawer(View toClose) { 
    drawerLayout.closeDrawer(toClose); 
} 
+0

hi @ juanjo-vega, на самом деле я сделал то, что хочу. но я не могу переключаться между вкладками. Я пробовал всех слушателей. – settaratici

+0

Я отредактировал свой ответ с остальной частью кода, который я использую для ящика. Надеюсь, это поможет. –

+0

У вас есть ссылка на этот код. На самом деле я много пробовал, но у меня не было никакого решения, поэтому, если у вас есть ссылка, пожалуйста, поделитесь со мной или кодом –

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