私は現在、Androidサイトからナビゲーションドロワーについて学び、その例を使用しています http://developer.Android.com/training/implementing-navigation/nav- draw.html
私が欲しいのは、MainActivity
を開くことができるボタンをNavigationDrawer
に追加することです。 XMLではなく、プログラムで行う必要があります。どうやってやるの?
MainActivity
に、drawerLayoutを含むメソッドを作成します。
public void open()
{
mDrawerLayout.openDrawer(Gravity.LEFT);
}
そしてあなたのフラグメントからoncreateView()メソッドで新しいボタンが欲しいので、プログラムでルートのインフレートされたレイアウトにボタンを追加します。あなたのフラグメントにはボタンがあります
以下のフラグメントの変更を試してみます
public static class PlanetFragment extends Fragment {
public static final String ARG_PLANET_NUMBER = "planet_number";
public PlanetFragment() {
// Empty constructor required for fragment subclasses
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_planet, container, false);
int i = getArguments().getInt(ARG_PLANET_NUMBER);
String planet = getResources().getStringArray(R.array.planets_array)[i];
int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()),
"drawable", getActivity().getPackageName());
((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId);
getActivity().setTitle(planet);
RelativeLayout root=(RelativeLayout)rootView.findViewById(R.id.root);
Button button=new Button(getActivity());
LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
button.setLayoutParams(params);
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
button.setText("openDrawer");
root.addView(button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
((MainActivity)getActivity()).open();
}
});
return rootView;
}
}
}
フラグメントでこのコードを試すことができます。
onCreate(Bundle)
メソッドでボタンを作成します。
Button button = new Button(this);
DrawerLayout
を見つけます:
mDrawerLayout = (DrawerLayout) findViewById(R.id.my_drawer_layout_id);
このボタンにOnClickListener
を設定します。
button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
mDrawerLayout.openDrawer(Gravity.LEFT);
}
)
これはあなたに空の引き出しを与えます。引き出しの中に置きたいView
がある場合は、次のものを置き換えます。
mDrawerLayout.openDrawer(Gravity.LEFT);
と:
mDrawerLayout.openDrawer(myCustomView);
ボタンで引き出しを切り替えたい場合(開いている場合は引き出しを閉じるか、閉じている場合は開く)次のOnClickListener
を使用します。
button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
mDrawerLayout.closeDrawer(Gravity.LEFT);
} else {
mDrawerLayout.openDrawer(Gravity.LEFT);
}
}
)
カスタムビューを使用している場合は、次のOnClickListener
を使用します。
button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
if (mDrawerLayout.isDrawerOpen(myCustomView)) {
mDrawerLayout.closeDrawer(myCustomView);
} else {
mDrawerLayout.openDrawer(myCustomView);
}
}
)