【发布时间】:2013-11-20 11:42:09
【问题描述】:
我目前有一个带有滑动选项卡的 Activity,我一直在使用 ActionBarSherlock,但我想在操作栏中有一个微调器,以便用户可以从微调器中选择项目,每个项目都是一个特定的文件打开值以重新填充每个选项卡上的视图。我已经看过你如何做到这一点,到目前为止还没有任何运气。我不希望它们都在片段中导航,而是让微调器重新填充选项卡上的视图。我看了一个类似的问题Is it possible to use dropdown AND tabs as navigation in the action bar?,这就是我想要的样子,但他的问题是使用两种不同类型的导航。请任何人都可以帮助我,让我知道这是否可能。先感谢您。我还刚刚查看了我拥有的一个 Android 应用程序,它是 Eurosport 应用程序,它具有我正在寻找的布局类型,如果有人有该应用程序来理解我的意思。
这是我的代码:
public class SlidingTabsActivity extends SherlockFragmentActivity
{
ViewPager viewPager;
TabsAdapter tabsAdapter;
ActionBar actionBarTabs;
Spinner spinner;
ArrayAdapter<String> arrayAdapter;
LayoutInflater spinnerLayoutInflater;
View spinnerView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
viewPager = new ViewPager(this);
viewPager.setId(R.id.pager);
setContentView(viewPager);
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, R.array.device_description);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerLayoutInflater = (LayoutInflater) this.getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
spinnerView = spinnerLayoutInflater.inflate(R.layout.spinner, null);
spinner = (Spinner) spinnerView.findViewById(R.id.tabsSpinner);
spinner.setAdapter(arrayAdapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3)
{
// TODO Auto-generated method stub
}
@Override
public void onNothingSelected(AdapterView<?> arg0)
{
// TODO Auto-generated method stub
}
});
actionBarTabs = getSupportActionBar();
actionBarTabs.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBarTabs.setCustomView(spinnerView);
actionBarTabs.setDisplayShowCustomEnabled(true);
actionBarTabs.setDisplayHomeAsUpEnabled(true);
tabsAdapter = new TabsAdapter(this, viewPager); // Declares the tabs adapter class with the view pager view
/* Adds fragments to the tabs adapter */
tabsAdapter.addTab(actionBarTabs.newTab().setText("PV"), Fragment_1.class, null);
tabsAdapter.addTab(actionBarTabs.newTab().setText("CONFIG"), Fragment_2.class, null);
tabsAdapter.addTab(actionBarTabs.newTab().setText("DIAG"), Fragment_3.class, null);
}
这是我的 Spinner 代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Spinner
android:id="@+id/tabsSpinner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
按下 Spinner 时,我在 logcat 中收到此消息:
11-26 12:22:44.282: W/InputEventReceiver(7217): Attempted to finish an input event but the input event receiver has already been disposed.
11-26 12:22:44.282: W/InputMethodManagerService(525): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4216a290 attribute=null, token = android.os.BinderProxy@42618330
【问题讨论】:
标签: android android-actionbar actionbarsherlock spinner android-tabs