我有一个OnItemSelectedListener为我的Spinner ,但它不会被调用,当选定的项目是一样的前一个。 显然, OnClickListener不是Spinner的选项。 每当用户点击一个项目时,我都需要抓住它。 任何想法? 也许这个Spinner在ActionBar内部的事实干扰了正常的行为? @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.tracklist_menu, menu); Spinner spinner = (Spinner) menu.findItem(R.id.option_ordering_spinner) .getActionView(); spinner.setAdapter(mSpinnerAdapter); spinner.setSelection(PrefsHelper.getOrderingSpinnerPos(prefs)); spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String str = "selected"; System.out.println(str); if (optionMenuInitialized) { switch (position) { case 0: // rdm […]
我从原来的ActionBar更改为AppCompat工具栏和setSupportActionBar(工具栏)。 当我使用getSupportActionBar()和setDisplayHomeAsUpEnabled(true)作为后退箭头时,click不会调用onOptionsItemSelected或任何其他侦听器方法。 我需要为它实现一些特殊的监听器吗? 贝福一切工作得很好。 编辑:初始化的ActionBar: mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); mActionBar = getSupportActionBar(); mActionBar.setHomeButtonEnabled(true); 并用片段replace内容后,我这样做: mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); mDrawerToggle.setDrawerIndicatorEnabled(false); mActionBar.setDisplayHomeAsUpEnabled(true);
我在使用Eclipse的Android JUnittestingtesting一个使用ActionBarActivity的应用程序时出现了问题,这个应用程序使用了android-support-v7-appcompat。 在模拟器或设备上运行时,似乎一切正常。 我尝试使用一个模拟应用程序在ActivityUnitTestCase和startActivity与ActionBarActivity和改变了值的母版主题-V11等,如在ActionBarCompatbuild议:java.lang.IllegalStateException:您需要使用一个Theme.AppCompat,但它仍然无法正常工作。 你需要使用一个Theme.AppCompat主题(或后代),这个活动也不会给出答案,也就是说,提问的人既没有在他的清单中指定的Theme.AppCompat(我也这么做),也没有真的想要扩展ActionBarActivity(我这样做)。 他的解决scheme是简单地扩展Activity。 我究竟做错了什么? 这是我得到的错误(Junit窗口中的Failure-Trace): java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:108) at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) at android.hello.HelloWorldActivity.onCreate(HelloWorldActivity.java:14) at android.app.Activity.performCreate(Activity.java:5104) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158) at android.hello.test.HelloWorldActivityTest.setUp(HelloWorldActivityTest.java:26) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661) HelloWorldActivity.java package android.hello; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.app.Activity; import […]
在使用此导航树实现应用程序导航时遇到问题: 后退button的标准实施是好的。 尝试实现向上button时,问题就开始了。 我期望的是: 当用户在细节5活动 ,并按向上button应用程序转到列表3活动 当用户在细节7活动,并按下向上button应用程序返回到家庭活动 所以用不同的术语,我想在后面的堆栈上有这样的行为: Android文档( Implementing Ancestral Navigation )build议使用以下代码来处理导航 : Intent parentActivityIntent = new Intent(this, MyParentActivity.class); parentActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(parentActivityIntent); finish(); 但是因为细节活动的父项活动在不同的导航path上有所不同,所以我不知道它究竟是哪一个。 所以我不能在Intent中调用它。 有没有一种方法来了解Android后端堆栈中真正的父代活动? 如果没有,有没有办法在这个应用程序中实现正确的导航 ?
我将我的应用程序的一部分从活动切换到碎片,以便我可以使用整洁的ActionBar选项卡。 但是,在完成转换之后,我遇到了一个问题:每当切换到另一个选项卡时,都会重新创buildFragment。 onCreate和onCreateView每次到达一个选项卡都会被调用。 我有4个选项卡,每个选项卡打开其中一个片段: Fragment ShopFragment = new WebActivity(); Fragment SearchFragment = new SearchActivity(context); Fragment StoreFragment = new StoreLocatorActivity(context, this); Fragment BlogsFragment = new BlogsActivity(context, this); 这是我的听众代码: class MyTabsListener implements ActionBar.TabListener { public Fragment fragment; public MyTabsListener(Fragment fragment) { this.fragment = fragment; } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { ft.hide(fragment); } @Override public […]
我试图让ActionBar在我的应用程序上正常工作(并且我使用ActionBarSherlock来获得Android 2.x和4.x之间统一的UI)。 我觉得像android:showAsAction="ifRoom"只是一个大,胖的谎言。 每当我给ifRoom设置一个动作,它总是出现在溢出菜单,即使有空间的PLENTY。 这是来自同一个模拟器的两个屏幕截图。 第一个显示ActionBar的所有选项设置为always ,第二个显示ActionBar,最后两个选项设置为ifRoom 。 正如你所看到的,当他们全部显示在屏幕截图中时,有足够的空间,那为什么他们不在第二个显示,因为他们有空间? 这是我的menu.xml: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/add" android:icon="@drawable/ic_menu_btn_add" android:showAsAction="always" android:title="Add"/> <item android:id="@+id/calculateNPV" android:icon="@drawable/menu_icon_npv" android:showAsAction="always" android:title="NPV"/> <item android:id="@+id/calculateIRR" android:icon="@drawable/menu_icon_irr" android:showAsAction="always" android:title="IRR/YR"/> <item android:id="@+id/send" android:icon="@android:drawable/ic_menu_share" android:showAsAction="always" android:title="@string/share_pdf"/> <item android:id="@+id/graph" android:icon="@drawable/ic_menu_gallery" android:showAsAction="ifRoom" android:title="@string/view_cashflow_diagram"/> <item android:id="@+id/deleteReorder" android:icon="@drawable/ic_menu_clear_playlist" android:showAsAction="ifRoom" android:title="@string/delete_reorder_cashflows"/> </menu>
Android操作栏兼容 可能吗? 在较旧的设备上(3.0版以前),只有当按下菜单键时才会显示不适合操作栏的项目,我希望这些项目可以分组在操作栏的溢出菜单中。
我正在使用选项卡的ActionBar自定义视图。 我的问题是自定义视图的顺序。 Android 之后显示标签 – 我不想要的。 我想在选项卡之前显示自定义视图。 有没有一种方法来自定义的动作条在标签之前显示自定义视图? 或者这是不可能的? 码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final ActionBar bar = getActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); View customActionBarView = getLayoutInflater().inflate(R.layout.home_actionbar, null, true); ActionBar.LayoutParams lp = new ActionBar.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lp.gravity = Gravity.START; bar.setCustomView(customActionBarView, lp); bar.setLogo(R.drawable.logo); bar.setHomeButtonEnabled(true); bar.setDisplayShowCustomEnabled(true); bar.addTab(bar.newTab() .setText("Stuff") .setTabListener(new TabListener<StuffFragment>( this, "stuff", StuffFragment.class))); bar.addTab(bar.newTab() .setText("Friends") .setTabListener(new TabListener<ContactsFragment>( this, "friends", […]
我使用ActionMode来select网格中的项目。 问题是,我无法识别是否完全按下了完成button。 我唯一可以知道的是ActionMode已经完成了。 但是按下Back也完成了ActionMode 。 期望的行为是在完成单击时接受select,并在Back按下退出ActionMode 。 我试图使用ActionMode.setCustomView()但它不影响完成button。 当ActionMode启动时, Activity.onBackPressed()不会被调用。 我发现的一个解决scheme是使用ActionBarSherlock并手动获取完成button: View closeButton = findViewById(R.id.abs__action_mode_close_button); 但是它仅适用于Android 2.x-3.x,因为在4.xa本机操作栏上使用。
有没有办法在操作栏顶部显示视图? 我想创build一个小的提示框,将用户指向操作栏中的项目。 我知道,具有设置视图的Toast将被呈现在操作栏上方。 有谁知道如何做到这一点的观点? 我已经尝试使用layout_gravity="top" FrameLayout和膨胀一个视图,然后将其添加到正在运行的活动的布局。 我提前感激你。 编辑 :这是我在想什么的形象: 编辑 :也许一些更多的细节是需要的。 我正在寻找一种方法,或者找出是否甚至可以添加一个视图的活动的视图层次结构,以便它最后呈现。 与CSS类似,我想为此特定视图(图像中的蓝色浮动框)提供更高的Z-index顺序,以便它将呈现在活动的操作栏区域之上。 这个视图与Action Bar没有任何关系,它只是简单的绘制在上面。