android学习日记:actionbar中按钮的下拉菜单实现

本文介绍了一种在Android应用中实现ActionBar按钮下拉菜单的方法。通过使用PopupWindow组件,可以为ActionBar上的按钮添加一个弹出式的下拉菜单。文章提供了具体的实现代码,并强调了设置背景绘制的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天找到了实现actionbar里面按钮下拉菜单的实现方法。使用PopupWindow即可。源码如下:

package com.bruce.actionbarlist;


import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.PopupWindow;

public class MainActivity extends Activity {
	View main;
	PopupWindow popupWindow;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //listView = (ListView)findViewById(R.id.add_list);
        main = findViewById(R.id.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		switch(item.getItemId()){
		case R.id.add:
			showActionbarList();
		}
		return true;
	}
	
	private void showActionbarList(){
		if(null == popupWindow){
			//ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,R.array.names);
			//listView.setAdapter(adapter);
			View layout = LayoutInflater.from(this).inflate(R.layout.add_list, null);
			int w = main.getWidth();
			int h = main.getHeight();
			popupWindow = new PopupWindow(layout, w/4, h, true);
			popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.transparent));
		}
		int[] pos = new int[2];
		main.getLocationOnScreen(pos);
		popupWindow.showAtLocation(main, Gravity.RIGHT|Gravity.TOP, pos[0], pos[1]);
	}
    
}

其中的popupWindow的setBackgroundDrawable方法必需要实现,不然listview弹出来以后,整个Activity就会死掉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值