左侧抽屉的实现问题

下面是我的布局文件(目前还不知道怎么加载另外的布局文件,所以左侧抽屉和中间部分的布局都在一个文件)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<ImageView
android:id="@+id/bimg"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<TextView
android:id="@+id/shuosha"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
<!-- The navigation drawer -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
</RelativeLayout>
下面是Activity文件(参照了一些网上的例子):
import android.app.Activity;
import android.app.ListActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.*;
import android.widget.*;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
import android.support.v4.widget.DrawerLayout;
public class MainActivity extends ListActivity {
/*初始化菜单*/
private static final String TOULE ="偷乐";
private static final String YANFU="眼福";
private static final String SHUOSHA ="说啥";
/**/
private ListView show;//show qiubai.
private ImageView bimg;//show bing image.
private ListView vlist ;//list view
//private ActionBarDrawerToggle mDrawerToggle;
private Bitmap bingisources;//bing image sources.
private List<String> qsbkshow = new ArrayList<String>();
//private List <String> arrayToList = new ArrayList<String>(Arrays.asList(new String[]{"偷乐","眼福"}));
private DrawerLayout mDrawerLayout = null;
Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0x123) {
if (bimg.getVisibility() == View.VISIBLE) {
bimg.setVisibility(View.INVISIBLE);
}
show.setVisibility(View.VISIBLE);
show.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.listcustom, qsbkshow));
} else if (msg.what == 0x124) {
if (show.getVisibility() == View.VISIBLE) {
show.setVisibility(View.INVISIBLE);
}
bimg.setVisibility(View.VISIBLE);
bimg.setImageBitmap(bingisources);
}
mDrawerLayout.setVisibility(View.INVISIBLE);
}
};
/**
* 获取左侧菜单的listView.
*
*
* @return
*/
private List<Map<String, Object>> getData(){
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put(TOULE,R.drawable.toule);
map.put(YANFU,R.drawable.yanfu);
map.put(SHUOSHA,R.drawable.guanyu);
list.add(map);
return list;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.leftmenu:
if(mDrawerLayout.getVisibility()==View.VISIBLE){
//vlist.setVisibility(View.INVISIBLE);
}else{
mDrawerLayout.setVisibility(View.VISIBLE);
mDrawerLayout.openDrawer(Gravity.LEFT);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// If the nav drawer is open, hide action items related to the content view
boolean drawerOpen = mDrawerLayout.isDrawerOpen(vlist);
menu.findItem(R.id.leftmenu).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setContentView(R.layout.main);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
show = (ListView) findViewById(R.id.show);
bimg = (ImageView) findViewById(R.id.bimg);
vlist= (ListView) findViewById(R.id.left_drawer);
setListAdapter(new SimpleAdapter(MainActivity.this, getData(), android.R.layout.simple_list_item_2, new String[]{"img_pre", "text"}, new
int[]{R.id.img_pre, R.id.text}));
vlist = getListView();
vlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if ((getData().get(0)).get(position).equals(TOULE)) {
class getNet implements Runnable {
@Override
public void run() {
getqs();
}
}
new Thread(new getNet()).start();
}else if ((getData().get(0)).get(position).equals(YANFU)) {
class getBingimages implements Runnable {
@Override
public void run() {
try {
getbimsa();
} catch (IOException e) {
e.printStackTrace();
}
}
}
new Thread(new getBingimages()).start();
}else if ((getData().get(0)).get(position).equals(SHUOSHA)) {
TextView tv = (TextView) findViewById(R.id.shuosha);
Toast.makeText(MainActivity.this,"说啥,现在看到了把??哈哈",Toast.LENGTH_LONG);
tv.setText("暂时不说.");
}
}
});
}
}
在线等大神......
相关推荐
AndroidMiscWidgets多方抽屉
android-misc-widgets多方抽屉bug修复版 解决“闪烁”问题
C# Winform抽屉菜单实战:左侧导航动画与页面缓存设计
在桌面应用开发中,导航菜单是界面布局的核心组件之一。C# Winform环境下的抽屉式左侧导航,通过收缩与展开动画,在有限屏幕空间内高效组织多级功能入口,兼顾视觉体验与操作效率。其原理基于Timer驱动面板宽度变化,配合双缓冲技术解决闪烁,并结合UserControl动态加载与页面缓存策略,实现流畅的模块切换。该模式广泛适用于上位机、设备管理、MIS系统等场景,尤其适合1366分辨率小屏设备及复杂业务层级。从基础Panel布局到浮动子菜单,再到DPI适配与性能优化,这一实践为构建专业级Winform界面提供
C# WinForm抽屉菜单实战:从自定义控件到左侧导航栏的完整实现
在桌面应用开发中,界面导航的体验直接影响用户对软件品质的感知,尤其是左侧导航栏作为功能入口的载体,其设计远不止堆放几个按钮那么简单。对于采用C/S架构的管理系统、工具软件或上位机界面,如何在不引入WPF等重型技术栈的前提下,用轻量的自定义控件构建结构清晰、交互顺滑的导航菜单,成为许多WinForms开发者关注的焦点。通过将菜单项抽象为可折叠的面板容器,结合定时器与插值算法实现平滑的展开/收起动画,并利用事件机制完成菜单层与业务窗体的解耦,即可在有限的面板空间中容纳大量功能入口。本文从TreeView与抽屉菜
PyQt5抽屉导航实现:界面与业务分离的完整实践
桌面客户端开发中,导航栏的交互设计直接影响产品质感。抽屉式侧边栏通过折叠与展开,在有限窗口内平衡菜单可访问性与内容区空间,是IDE、设计工具等软件的常见设计模式。其实现涉及控件状态管理、动画生命周期和页面通信等核心机制。PyQt5作为Python生态中主流的GUI框架,借助QPropertyAnimation可平滑实现导航栏宽度动画,而将界面与业务逻辑解耦,则能显著提升代码可维护性与扩展性。在实际工程中,还需处理动画卡顿、版本兼容、线程阻塞等典型问题,通过合理运用QThread和信号槽机制,可避免数据采集导
纯种的左侧或上侧抽屉-SlidingDrawer实现
纯种的左侧或上侧抽屉-SlidingDrawer实现,这个问题困扰了我想当一段时间,看网上没有用SlidingDrawer实现左侧和上侧抽屉的(SlidingDrawer默认的是下侧和右侧,这个你懂的)。


