【发布时间】:2015-03-13 09:39:52
【问题描述】:
我希望在单击按钮时显示抽屉式导航,因此我使用以下代码。我在自定义适配器内处理点击事件,但在单击列表中的任何对象时抽屉不会在任何时间点关闭。知道如何解决吗? 另一个问题是我只能从屏幕底部到屏幕中间在导航抽屉中绘制。我该如何解决? 在我的活动中
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(android.R.id.list);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
mDrawerLayout.closeDrawer(Gravity.RIGHT);
} else {
mDrawerLayout.openDrawer(Gravity.RIGHT);
}
}
});
String[] values = new String[] { "1:","2","","3"};
MySimpleArrayAdapterUhr adapter = new MySimpleArrayAdapterUhr(this, values);
setListAdapter(adapter);
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// Closing the drawer
mDrawerLayout.closeDrawers();
}
});
我的适配器:
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Activity context;
private final String[] names;
static class ViewHolder {
public TextView text;
public ImageView image;
public LinearLayout full;
}
public MySimpleArrayAdapter(Activity context, String[] names) {
super(context, R.layout.drawer_list_item, names);
this.context = context;
this.names = names;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// reuse views
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.drawer_list_item, null);
// configure view holder
ViewHolder viewHolder = new ViewHolder();
viewHolder.full = (LinearLayout) rowView.findViewById(R.id.full);
viewHolder.text = (Button) rowView.findViewById(R.id.label);
viewHolder.image = (ImageView) rowView.findViewById(R.id.image);
rowView.setTag(viewHolder);
}
// fill data
ViewHolder holder = (ViewHolder) rowView.getTag();
String s = names[position];
holder.text.setText(s);
if (s.equals("1")) {
holder.text.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
v.invalidate();
break;
}
case MotionEvent.ACTION_UP:
v.playSoundEffect(android.view.SoundEffectConstants.CLICK);
Intent intent = new Intent(context, activity_einstellungen_ereignis_erstellen.class);
v.getContext().startActivity(intent);
case MotionEvent.ACTION_CANCEL: {
Button view = (Button) v;
view.invalidate();
break;
}
}
return true;
});
}
return rowView;
}
}
【问题讨论】:
-
你想清楚,我也有同样的问题...