在PopupWindow中添加列表在开发中还是比较常见的应用,在列表中的item底部和顶部的跳跃,在遥控设备上应用理广泛(如STB)。故有此例,备忘。

public class TestPopupWindow extends Activity {private ListView listView;private PopupWindow popupWindow;private TextView textView;private Button myButton;private String[] name;private int iFirstOrLastItemSelected;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);myButton = (Button) findViewById(R.id.button);//从string中获取字符数组name = getResources().getStringArray(R.array.name_one);//监听按钮myButton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View arg0) {initPopWindow();}});}private void initPopWindow() {//得到PopupWindow的布局View contentView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.popupwindow, null);contentView.setBackgroundColor(Color.DKGRAY);//设置PopWindow的宽高popupWindow = new PopupWindow(findViewById(R.id.mainLayout), 400, 500);popupWindow.setContentView(contentView);textView = (TextView) contentView.findViewById(R.id.text);textView.setText("Test");listView = (ListView) contentView.findViewById(R.id.list);//向adapter装载数据ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, name);listView.setAdapter(adapter);if (popupWindow != null) {popupWindow.dismiss();}popupWindow.setFocusable(true);//显示PopupWindowpopupWindow.showAsDropDown(contentView);//监听PopupWindow中的选中(高亮)的itemlistView.setOnItemSelectedListener(itemSelectedListener);//监听键盘按键listView.setOnKeyListener(popuWindowListener);//监听并响应所点击的itemlistView.setOnItemClickListener(clickListener);}OnItemClickListener clickListener = new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {//在此可实现响应item被点击后的功能popupWindow.dismiss();}};OnItemSelectedListener itemSelectedListener = new OnItemSelectedListener() {public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {iFirstOrLastItemSelected = position;}public void onNothingSelected(AdapterView<?> parent) {}};private OnKeyListener popuWindowListener = new OnKeyListener() {@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {if (event.getAction() == KeyEvent.ACTION_DOWN) {switch (keyCode) {case KeyEvent.KEYCODE_DPAD_UP:if (iFirstOrLastItemSelected == 0) {listView.setSelection(name.length - 1);}break;case KeyEvent.KEYCODE_DPAD_DOWN:if (iFirstOrLastItemSelected == name.length - 1) {listView.setSelection(0);}break;}}return false;}};}

若要详细了解请下载


更多相关文章

  1. Android网络状态监听及切换,WiFi开关与状态监听,便携式热点 Wifi热
  2. Android(安卓)监听软键盘状态
  3. RecyclerView 中 item 点击事件的优化
  4. Android(安卓)实现适配器中的子控件与Activity通信
  5. Android(安卓)AlertDialog的各种用法总结
  6. Android(安卓)Media player 报错Error(38,0)
  7. 查看Android(安卓)ADT Plugin版本的方法
  8. 【Android】OkHttp系列(一):发送请求与获取响应流程概述
  9. Android(安卓)studio添加按钮点击进入下一页

随机推荐

  1. Android中显示消息通知栏
  2. 关于 android AES 部分机器 javax.crypto
  3. View、Window、WindowManager---Choreogr
  4. android Contentprovider配置记录
  5. android Connection to http: 192.168.xx
  6. android虚拟键盘弹出时挡住EditText的解
  7. Android(安卓)强制竖屏
  8. Android(安卓)eclipse项目转成Android(安
  9. Android获取本机号码及运营商
  10. Android(安卓)webview 加载H5时,隐藏掉不