Android之PopupWindow+ListView+在item顶部底部跳跃
16lz
2021-01-26
在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;}};}
若要详细了解请下载
更多相关文章
- Android网络状态监听及切换,WiFi开关与状态监听,便携式热点 Wifi热
- Android(安卓)监听软键盘状态
- RecyclerView 中 item 点击事件的优化
- Android(安卓)实现适配器中的子控件与Activity通信
- Android(安卓)AlertDialog的各种用法总结
- Android(安卓)Media player 报错Error(38,0)
- 查看Android(安卓)ADT Plugin版本的方法
- 【Android】OkHttp系列(一):发送请求与获取响应流程概述
- Android(安卓)studio添加按钮点击进入下一页