Android 将(打开/关闭)按钮添加到(打开/关闭)导航抽屉的活动中
我目前正在android网站上学习导航抽屉,我正在使用他们的例子Android 将(打开/关闭)按钮添加到(打开/关闭)导航抽屉的活动中,android,button,android-activity,drawer,Android,Button,Android Activity,Drawer,我目前正在android网站上学习导航抽屉,我正在使用他们的例子 我想要的是在main活动中添加一个按钮,它将能够打开NavigationDrawer。我需要以编程的方式来做,而不是用XML。我该怎么做?在MainActivity中创建一个包含抽屉布局的方法 public void open() { mDrawerLayout.openDrawer(Gravity.LEFT); } 从你的碎片中 在oncreateView()方法中,以编程方式在根布局中添加新按钮。您的片段有一个按钮
我想要的是在
main活动中添加一个按钮,它将能够打开NavigationDrawer
。我需要以编程的方式来做,而不是用XML。我该怎么做?在MainActivity
中创建一个包含抽屉布局的方法
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);
查找您的抽屉布局
:
mDrawerLayout = (DrawerLayout) findViewById(R.id.my_drawer_layout_id);
在此按钮上设置一个OnClickListener
:
button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
mDrawerLayout.openDrawer(Gravity.LEFT);
}
)
这会给你一个空抽屉。如果要将视图
放在抽屉内,请更换:
mDrawerLayout.openDrawer(Gravity.LEFT);
与:
如果希望按钮切换抽屉(如果抽屉打开,则关闭抽屉;如果抽屉关闭,则打开抽屉),请使用以下OnClickListener
:
button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
mDrawerLayout.closeDrawer(Gravity.LEFT);
} else {
mDrawerLayout.openDrawer(Gravity.LEFT);
}
}
)
button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
if (mDrawerLayout.isDrawerOpen(myCustomView)) {
mDrawerLayout.closeDrawer(myCustomView);
} else {
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);
}
}
)
button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
if (mDrawerLayout.isDrawerOpen(myCustomView)) {
mDrawerLayout.closeDrawer(myCustomView);
} else {
mDrawerLayout.openDrawer(myCustomView);
}
}
)
但我如何添加按钮呢?作为回答,我没有在活动中添加按钮,而是在片段中添加按钮,所以您可以通过调用activity open()方法从任何片段和任何视图中访问抽屉,单击事件。为什么选择Gravity.LEFT?为什么不对呢?这真的相关吗,还是只需要一个int?不要问你——希望你能更好地理解。通常导航抽屉从左侧打开(如单击应用程序徽标左侧的图标)。查看标准的谷歌应用程序。但也可以打开导航。抽屉也从右边开始…(取决于需要)他想从应用程序的任何活动中打开抽屉。按钮仍然不存在seen@SartherisStormhammer可以发布布局xml文件吗?您在setContentView()中使用的那个?