[Android] NavigationDrawer를 오른쪽에 표시
18055 단어 Android
나는 특별히 사람들에게 보여주고 싶은 것은 아니다. 단지 마음에 드는 사람이 보게 하기 위해 정보를 표시하는 것을 실현했다.
이런 느낌이에요.
이 애플리케이션은 Qita의 API를 사용하는 리더 애플리케이션입니다.
관심 있는 사람은 꼭 사용하세요.
Qittaro | GooglePlayStore
1. 소스 코드
사용하는res 파일은 다음 세 파일입니다.
main.xml은
res/menu
,strings에 있습니다.xmlres/values
,fragmentmain.xml을 res/layout
에 두십시오.main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<item android:id="@+id/menu_main_info"
android:icon="@drawable/ic_menu_info"
android:title="@string/menu_article_info_title"
android:visible="false"
app:showAsAction="always"
/>
</menu>
strings.xml<resources>
<string name="btn_text_right_drawer_open">Open Right Drawer</string>
</resources>
fragment_main.xml<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_drawer_layout"
android:layout_width="match_parent" android:layout_height="match_parent"
>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btn_text_right_drawer_open"
/>
<ListView
android:id="@+id/main_drawer_list"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="right"
android:choiceMode="singleChoice"
android:background="#EEEEEE"
/>
</android.support.v4.widget.DrawerLayout>
다음은 Fragment
파일입니다.특별히 편집
DrawerLayout
된 리스트뷰가 없으니 오른쪽에서 나오는지 확인하시면 됩니다.MainFragment.java
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.Button;
public class MainFragment extends Fragment implements View.OnClickListener {
private DrawerLayout drawerLayout;
private ListView drawerList;
public static MainFragment newInstance {
return new MainFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_main, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
this.drawerLayout = (DrawerLayout)this.getView().findViewById(R.id.article_drawer_layout);
this.drawerList = (ListView)this.getView().findViewById(R.id.article_drawer_list);
DrawerLayout.DrawerListener drawerListener = new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View view, float v) {
}
@Override
public void onDrawerOpened(View view) {
// メニューの更新
self.getActivity().supportInvalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View view) {
// メニューの更新
self.getActivity().supportInvalidateOptionsMenu();
}
@Override
public void onDrawerStateChanged(int i) {
}
};
this.drawerLayout.setDrawerListener(drawerListener);
Button btn = (Button)this.getView().findViewById(R.id.button);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
/**
* Gravityでの指定も出来るよ。
*/
int gravity = Gravity.RIGHT;
if (this.drawerLayout.isDrawerOpen(gravity)) {
this.drawerLayout.closeDrawer(gravity);
} else {
this.drawerLayout.openDrawer(gravity);
}
return true;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.main, menu);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// メニューの更新処理はこのメソッドで
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.info:
return this.pushMenuInfo();
default:
return super.onOptionsItemSelected(item);
}
}
private boolean pushMenuInfo() {
/**
* Viewでの指定もできる
*/
if (this.drawerLayout.isDrawerOpen(this.drawerList)) {
this.drawerLayout.closeDrawer(this.drawerList);
} else {
this.drawerLayout.openDrawer(this.drawerList);
}
return true;
}
}
2. 주의사항
관심사는요.
layout_gravity
를 right
DrawerLayout의 layoutgravity를 right로
layout_gravitiy
의 값을 right
로 설정하면 오른쪽에서 표시할 수 있습니다.참고로 제 level은 11 이하이기 때문에 지정
right
도 가능하고 지정end
도 가능합니다.왼쪽에 표시되면
start
또는 left
를 지정하면 됩니다.DrawerLayout의 Open, Close는gravity에서 지정할 수 있습니다
이거 설치할 때 알았어.
별다른 차이는 없지만, 뷰를 저장할 필요가 없어 편리하다고 생각한다.
Reference
이 문제에 관하여([Android] NavigationDrawer를 오른쪽에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryokosuge/items/370d24b5696e017f20e4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)