을 열어 탭을 밀어 와이프 떠날 때 : https://github.com/ogaclejapan/SmartTabLayout여기 왼쪽 탐색 창 난 (smartTabLayout)을 탭 슬라이딩 재 설계를 사용하고
그리고, 소재 디자인 측면 탐색 창 (로이드 상주 메뉴), 여기서는 https://github.com/SpecialCyCi/AndroidResideMenu을
내가 직면 한 문제는 다음과 같습니다. 탭에서 왼쪽으로 스 와이프하면 탐색 서랍이 열리지 만 오른쪽으로 스 와이프하면 문제가 없습니다.
MainActivity.java : 슬라이딩 탭용
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "MainActivity";
private SectionsPageAdapter sectionsPageAdapter;
private ViewPager viewPager;
Toolbar toolbar;
ResideMenu resideMenu;
SmartTabLayout smartTabLayout;
private MainActivity mContext;
private ResideMenuItem equalizer;
private ResideMenuItem ringtonemaker;
private ResideMenuItem identifysong;
private ResideMenuItem themes;
private ResideMenuItem rateus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
setUpMenu();
toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
sectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
smartTabLayout = (SmartTabLayout) findViewById(R.id.viewpagertab);
smartTabLayout.setViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new Albums(), "Albums");
adapter.addFragment(new Artists(), "Artists");
adapter.addFragment(new Songs(), "Songs");
adapter.addFragment(new Playlists(), "Playlists");
adapter.addFragment(new Genres(), "Genres");
adapter.addFragment(new My_Files(), "My Files");
viewPager.setAdapter(adapter);
viewPager.setPageTransformer(true, new CubeInTransformer());
}
private void setUpMenu() {
// attach to current activity;
resideMenu = new ResideMenu(this);
resideMenu.setBackground(R.drawable.city);
resideMenu.attachToActivity(this);
//valid scale factor is between 0.0f and 1.0f. leftmenu'width is 150dip.
resideMenu.setScaleValue(0.6f);
// create menu items;
equalizer = new ResideMenuItem(this, R.drawable.city, "Equalizer");
ringtonemaker = new ResideMenuItem(this, R.drawable.city, "Ringtone Maker");
identifysong = new ResideMenuItem(this, R.drawable.city, "Identify Song");
themes = new ResideMenuItem(this, R.drawable.city, "Theme");
rateus = new ResideMenuItem(this, R.drawable.city, "Rate us");
equalizer.setOnClickListener(this);
ringtonemaker.setOnClickListener(this);
identifysong.setOnClickListener(this);
themes.setOnClickListener(this);
rateus.setOnClickListener(this);
resideMenu.addMenuItem(equalizer, ResideMenu.DIRECTION_LEFT);
resideMenu.addMenuItem(ringtonemaker, ResideMenu.DIRECTION_LEFT);
resideMenu.addMenuItem(identifysong, ResideMenu.DIRECTION_LEFT);
resideMenu.addMenuItem(themes, ResideMenu.DIRECTION_LEFT);
resideMenu.addMenuItem(rateus, ResideMenu.DIRECTION_LEFT);
// You can disable a direction by setting ->
resideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_RIGHT);
}
@Override
public void onClick(View view) {
}
}
어댑터 :
class SectionsPageAdapter extends FragmentPagerAdapter {
private final List<Fragment> FragmentList = new ArrayList<>();
private final List<String> FragmentTitleList = new ArrayList<>();
public void addFragment(Fragment fragment, String Title){
FragmentList.add(fragment);
FragmentTitleList.add(Title);
}
public SectionsPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return FragmentTitleList.get(position);
}
@Override
public Fragment getItem(int position) {
return FragmentList.get(position);
}
@Override
public int getCount() {
return FragmentList.size();
}
}
,691 여기
는 코드
activity_main.xml :
<RelativeLayout 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:background="@drawable/city"
tools:context="com.musicplayer.musicana.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="30dp"
android:title="Musicana"
app:titleTextColor="#ffffff">
</android.support.v7.widget.Toolbar>
<com.ogaclejapan.smarttablayout.SmartTabLayout
android:id="@+id/viewpagertab"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_below="@+id/toolbar"
app:stl_indicatorAlwaysInCenter="false"
app:stl_indicatorWithoutPadding="false"
app:stl_indicatorInFront="false"
app:stl_indicatorInterpolation="smart"
app:stl_indicatorGravity="center"
app:stl_indicatorColor="#40C4FF"
app:stl_indicatorThickness="30dp"
app:stl_indicatorWidth="110dp"
app:stl_indicatorCornerRadius="10dp"
app:stl_overlineColor="#4D000000"
app:stl_overlineThickness="0dp"
app:stl_underlineColor="#ffffff"
app:stl_underlineThickness="0dp"
app:stl_dividerColor="#ffffff"
app:stl_dividerThickness="0dp"
app:stl_defaultTabBackground="?attr/selectableItemBackground"
app:stl_defaultTabTextAllCaps="false"
app:stl_defaultTabTextColor="#ffffff"
app:stl_defaultTabTextSize="16sp"
app:stl_defaultTabTextHorizontalPadding="30dp"
app:stl_defaultTabTextMinWidth="0dp"
app:stl_distributeEvenly="false"
app:stl_clickable="true"
app:stl_titleOffset="24dp"
app:stl_drawDecorationAfterTab="false"
/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/viewpagertab"
/>
</RelativeLayout>
처럼 사용? 'resideMenu.addIgnoredView (viewPager); ' –
아니, 이것을 시도했다. 이것은 단지 전체 viewpager가 측면 탐색기 서랍에 액세스하는 것을 차단합니다. 처음 탭을 스 와이프하면 사이드 탐색 서랍을 열려고합니다. 어쨌든, 당신의 도움을 주셔서 감사합니다 :) –
당신은 viewpager의 첫 번째 조각에 도달했을 때와 같이 뭔가를 시도해 볼 수 있습니다. 그리고 나서 ignoredView를 제거하고 다른 페이지에있을 때 Viewpager를 무시 된보기에 추가하십시오. –