Android ActionBar详解(三):ActionBar实现切换Tabs标签

实现切换Tabs标签;

  

 Activity代码:  

public class ActionBarTabs extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.action_bar_tabs);
}

public void onAddTab(View v) {
final ActionBar bar = getActionBar();
final int tabCount = bar.getTabCount();
final String text = "Tab " + tabCount;

bar.addTab(bar.newTab().setText(text)
.setTabListener(new TabListener(new TabContentFragment(text))));
}

public void onRemoveTab(View v) {
final ActionBar bar = getActionBar();
bar.removeTabAt(bar.getTabCount() - 1);
}

public void onToggleTabs(View v) {
final ActionBar bar = getActionBar();

if (bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS) {
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE);
} else {
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
}
}

public void onRemoveAllTabs(View v) {
getActionBar().removeAllTabs();
}

private class TabListener implements ActionBar.TabListener {
private TabContentFragment mFragment;
public TabListener(TabContentFragment fragment) {

mFragment = fragment;
}

public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.add(R.id.fragment_content, mFragment, mFragment.getText());
}

 
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(mFragment);
}

public void onTabReselected(Tab tab, FragmentTransaction ft) {
Toast.makeText(ActionBarTabs.this, "Reselected!", Toast.LENGTH_SHORT).show();
}

}

private class TabContentFragment extends Fragment {
private String mText;
public TabContentFragment(String text) {
mText = text;
}

public String getText() {
return mText;
}
  
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View fragView = inflater.inflate(R.layout.action_bar_tab_content, container, false);
TextView text = (TextView) fragView.findViewById(R.id.text);
text.setText(mText);
return fragView;
}
}
}

涉及的布局文件action_bar_tabs.xml代码为:

< ?xml version="1.0" encoding="utf-8"?>
< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

< FrameLayout android:id="@+id/fragment_content"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" />

< LinearLayout android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="vertical">

< Button android:id="@+id/btn_add_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_add_tab"
android:onClick="onAddTab" />

< Button android:id="@+id/btn_remove_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_remove_tab"
android:onClick="onRemoveTab" />

< Button android:id="@+id/btn_toggle_tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_toggle_tabs"
android:onClick="onToggleTabs" />

< Button android:id="@+id/btn_remove_all_tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_remove_all_tabs"
android:onClick="onRemoveAllTabs" />
< /LinearLayout>

< /LinearLayout>

布局文件action_bar_tab_content.xml;

< ?xml version="1.0" encoding="utf-8"?>
< TextView xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />






  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 Android 应用程序中实现顶部返回按钮,可以使用 ActionBar。ActionBar 是 Android 提供的一种 UI 控件,通常位于应用程序的顶部,用于显示应用程序名称、菜单和其他选项。 要实现 ActionBar 中的顶部返回按钮,请按照以下步骤操作: 1. 打开 Android Studio,创建一个新的空白项目。 2. 在 res/values/styles.xml 文件中添加以下代码: ``` <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> </style> ``` 这将为应用程序创建一个基本的主题,其中包含一个暗色 ActionBar。 3. 在 AndroidManifest.xml 文件中,将应用程序的主题设置为上一步中创建的主题: ``` <application android:theme="@style/AppTheme" ... ``` 4. 在 MainActivity.java 文件中,添加以下代码: ``` @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 启用 ActionBar 返回按钮 getSupportActionBar().setDisplayHomeAsUpEnabled(true); } // 处理 ActionBar 返回按钮点击事件 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // 在此处添加返回按钮点击后的处理逻辑 finish(); return true; } return super.onOptionsItemSelected(item); } ``` 这将启用 ActionBar 中的返回按钮,并在用户点击该按钮时关闭当前活动。 5. 运行应用程序,并确保 ActionBar 中显示了返回按钮。单击该按钮,应该会关闭当前活动。 注意:如果您的应用程序需要导航到其他活动,则可以在 onOptionsItemSelected() 方法中添加相应的 Intent。例如: ``` case android.R.id.home: Intent intent = new Intent(this, OtherActivity.class); startActivity(intent); finish(); return true; ``` 这将使 ActionBar 返回按钮导航到 OtherActivity。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值