目前我正在學習從Android網站導航抽屜,和我使用他們的榜樣http://developer.android.com/training/implementing-navigation/nav-drawer.html添加(開/關)按鈕活動(開/關)導航抽屜
我要的是在MainActivity
中添加一個可以打開NavigationDrawer
的按鈕。我需要以編程方式執行,而不是使用XML。我怎樣才能做到這一點?
目前我正在學習從Android網站導航抽屜,和我使用他們的榜樣http://developer.android.com/training/implementing-navigation/nav-drawer.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);
}
}
)
該按鈕仍然無處可見 –
@SartherisStormhammer你可以發佈你的佈局xml文件嗎?你在'setContentView()'中使用的那個? – Vikram
但我該如何添加按鈕? –
在答案我沒有添加按鈕的活動,但在片段,所以你可以通過調用活動open()方法訪問任何片段和任何視圖點擊事件的抽屜。 – Pravin
謝謝你,那個工作 –