如何单击程序控制下的 Android 操作栏项



PeterH发布了以下代码:

//initiate the button
button.performClick();
button.setPressed(true); 
button.invalidate(); 
// delay completion till animation completes
button.postDelayed(new Runnable() {  //delay button 
public void run() {  
    button.setPressed(false); 
    button.invalidate();
    //any other associated action
 }
}, 800);  // .8secs delay time

是否可以对操作栏项目执行相同类型的操作?

好吧,您可以将MenuItem另存为一个字段,然后调用OptionsItemSelected(savedMenuItem)。但是由于操作栏项是菜单项而不是按钮(当然,如果您的操作栏不是像 http://www.vogella.com/articles/AndroidActionBar/article.html#actionbar_dynamic 那样使用视图自定义的)。但是,如果您的 ActionBar 是使用视图自定义的,并且该视图具有按钮,则可以按照代码段中的考虑自定义该按钮的行为。例:

public class MainActivity extends Activity {
MenuItem item;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ActionBar actionBar = getActionBar();
    actionBar.setSubtitle("mytest");
    actionBar.setTitle("TESTESTEST");
    TextView tView = (TextView) findViewById(R.id.textView1);
    tView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            onOptionsItemSelected(item);
        }
    });
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.action_settings) {
        this.item = item;
        Toast.makeText(this, "settings", Toast.LENGTH_SHORT).show();
    }
    return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return true;
}

}

最新更新