0

私はAndroidでカスタムレイアウトを開発しています。スワイプビューでナビゲーションドロワーを実装する必要があります。スワイプビューのナビゲーションドロワー

デフォルトでAndroid Studioから生成されたコードを使用して、スワイプビューを実装する必要があります。

私はそれを別のメニューのナビゲーション・ドロワーで利用できるのですが、私はメニュー内のメニューや画面上で指をスワイプすることで間違ったページに切り替えることができますタブ付きトップメニュー、私はページ間を移動するだけで済みます)

これは私のソースコードですが、私は両方のソリューションを実装しようとしています

public class Home extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { 

private SectionsPagerAdapter mSectionsPagerAdapter; 
private ViewPager mViewPager; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
    mViewPager = (ViewPager) findViewById(R.id.container); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 

    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); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
} 


public static class PlaceholderFragment extends Fragment { 
    private static final String ARG_SECTION_NUMBER = "section_number"; 

    public PlaceholderFragment() {} 

    public static PlaceholderFragment newInstance(int sectionNumber) { 
     PlaceholderFragment fragment = new PlaceholderFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
     fragment.setArguments(args); 
     return fragment; 
    } 

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


     return rootView; 
    } 
} 


public class SectionsPagerAdapter extends FragmentPagerAdapter { 

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

    @Override 
    public Fragment getItem(int position) { 
     // getItem is called to instantiate the fragment for the given page. 
     // Return a PlaceholderFragment (defined as a static inner class below). 
     return PlaceholderFragment.newInstance(position + 1); 
    } 

    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 3; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "SECTION 1"; 
      case 1: 
       return "SECTION 2"; 
      case 2: 
       return "SECTION 3"; 
     } 
     return null; 
    } 
} 

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

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

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

    if (id == R.id.qrcode) { 
     Intent i = new Intent(this, QRCode.class); 
     startActivity(i); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.nav_qrcode) { 
     Intent i = new Intent(this, QRCode.class); 
     startActivity(i); 
    } 

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

}

これが私の基本的なものですレイアウト:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 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/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

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

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     android:background="#B59154" 
     app:itemTextColor="#ffffff" 
     app:menu="@menu/activity_main_drawer" /> 
</android.support.v4.widget.DrawerLayout> 

この機能を使用して独自のレイアウトを作成する方法がわかりません。

答えて

0

私はあなたの質問を得た場合、私は知らないが、私はあなたがSwipeViewsTabbedActivityを作成することができます

awnswerしようとすると、彼らはあなたが望むものを追加します。 Navigation Drawerから本当に欲しいと思ったら、より具体的にする必要があります。

OR

あなたはNavigation Drawerを作成し、それはあなたが望むた作品ので、それにViewPagerを追加することができます。

あなたは私はそれのお手伝いをしようとすることができ、言う:)

+0

だけViewPagerを追加する方法がわからない場合は、ので、私は最初のオプション:)

を使用されるように、私は同じ問題を抱えていました申し訳ありませんが、私はSwipeViewsを使ってナビゲーションドロワーを作成する必要があります。同じ「アクティビティ」では、私はコンテスト情報を参照できるコンテキストメニューでナビゲーションドロワーを用意する必要があります。 SwipeViewのページを変更する別の方法と、アクティビティに含まれる使用方法。だから私のコンテンツを選択するには、NavigationDrawerまたはSwipeViewを使用することができます –

+0

これは私のアプリです: http://imgur.com/EQAtK4C 私はtabbedActivityを使用して、それらのものを追加しました:D –

+0

どうしたらいいですか?あなたの結果を得るために私のコードを変更できますか? –

関連する問題