Хочу добавить табы с тулбаром, и drawerlayout поверх тулбара.
Уже три дня мучаюсь, перепробовал разные варианты.
Main Activity
static final String LOG_TAG = "SlidingTabsBasicFragment";
private SlidingTabLayout mSlidingTabLayout;
ViewPager mViewPager;
private ActionBarDrawerToggle toggle;
ListView lv_navigation_drawer;
DrawerLayout drawerLayout;
static final String TAG = "myLogs";
static final int PAGE_COUNT = 2;
ViewPager pager;
PagerAdapter pagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_sample);
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(this, drawerLayout,R.string.navigation_drawer_open, R.string.navigation_drawer_close);
toggle.setDrawerIndicatorEnabled(true);
drawerLayout.setDrawerListener(toggle);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.rowlayout, R.id.label, new String[] {"Screen 1", "Screen 2", "Screen 3"});
this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
this.getSupportActionBar().setHomeButtonEnabled(true);
lv_navigation_drawer = (ListView) findViewById(R.id.lv_navigation_drawer);
lv_navigation_drawer.setAdapter(adapter);
lv_navigation_drawer.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.d("log", "itemClick: position = " + position + ", id = "+ id);
Toast.makeText(SlidingTabsActivity.this, "itemClick: position = " + position + ", id = " + id, Toast.LENGTH_LONG).show();
drawerLayout.closeDrawer(lv_navigation_drawer);
}
});
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mViewPager.setAdapter(new SamplePagerAdapter());
mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs);
mSlidingTabLayout.setViewPager(mViewPager);
/*
* FragmentTransaction transaction =
* getSupportFragmentManager().beginTransaction();
* SlidingTabsBasicFragment fragment = new SlidingTabsBasicFragment();
* transaction.replace(R.id.sample_content_fragment, fragment);
* transaction.commit();
*/
}
public boolean onPrepareOptionsMenu(Menu menu) {
// If the nav drawer is open, hide action items related to the content view
boolean drawerOpen = drawerLayout.isDrawerOpen(lv_navigation_drawer);
// menu.findItem(R.id.shake).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (toggle.onOptionsItemSelected(item))
return true;
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
switch (item.getItemId()) {
case R.id.action_settings:
Toast.makeText(this, "Вы ", Toast.LENGTH_LONG).show();
return true;
default:
return true;
}
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
toggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
toggle.onConfigurationChanged(newConfig);
}
fragment_sample
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorAccent"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>
</FrameLayout>
<ListView
android:id="@+id/lv_navigation_drawer"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<com.example.eldos.callreport.SlidingTabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white" />
</LinearLayout>
И этот код:
Но максимум, что получилось, так это табы поверх тулбара, хотя боковое меню работает, но так же не работает и листание.
Что и куда мне надо поместить в fragment_sample.xml
, чтобы он был ниже actionbar и листался?
Обновление
Сейчас я кое-как смог сделать, чтобы они работали, а эти вкладки создаются во фрагменте и проблема в том, что она перекрывает тулбар, хоть он и назначен как экшбар, добавляю еще тулбар пустой во фрагмент, а он перекрывает тулбар от активити, и не видно кнопок экшнбара, получается, что он создает вью без тулбара, который в активити, и перекрывает его.
Как можно сдвинуть вкладки вниз, не перекрывая тулбар?
<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorAccent"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
/>
А вот если тулбар поставить выше drawer layout, все хорошо, и вкладки ниже тулбара, и боковое меню работает, и кнопки, но боковое меню выходит не поверх тулбара. Куда и что надо дописать, чтобы боковое меню было поверх тулбара тоже?