アンドロイド:使用アクティビティバー(アクションバー)

アクションバーを有効にします

package com.example.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    ActionBar actionBar;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        actionBar=getSupportActionBar();
    }
    public void showActionBar(View source){
        actionBar.show();
    }
    public void hideActionBar(View source){
        actionBar.hide();
    }
}

有効プログラムアイコンナビゲーション

package com.example.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

import com.example.myapplication.FirstActivity;
import com.example.myapplication.R;


public class MainActivity extends AppCompatActivity {
    private TextView txt;
    ActionBar actionBar;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt = (TextView) findViewById(R.id.txt);
        actionBar = getSupportActionBar();
        // 设置是否显示应用程序图标
        actionBar.setDisplayShowHomeEnabled(true);
        // 将应用程序图标设置为可点击的按钮
//		actionBar.setHomeButtonEnabled(true);
        // 将应用程序图标设置为可点击的按钮,并在图标上添加向左箭头
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflator = new MenuInflater(this);
        // 状态R.menu.menu_main对应的菜单,并添加到menu中
        inflator.inflate(R.layout.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    // 选项菜单的菜单项被单击后的回调方法
    public boolean onOptionsItemSelected(MenuItem mi) {
        if (mi.isCheckable()) {
            mi.setChecked(true);
        }
        // 判断单击的是哪个菜单项,并有针对性地作出响应
        switch (mi.getItemId()) {
            case android.R.id.home:
                // 创建启动FirstActivity的Intent
                Intent intent = new Intent(this, FirstActivity.class);
                // 添加额外的Flag,将Activity栈中处于FirstActivity之上的Activity弹出
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                // 启动intent对应的Activity
                startActivity(intent);
                break;
            case R.id.font_10:
                txt.setTextSize(10 * 2);
                break;
            case R.id.font_12:
                txt.setTextSize(12 * 2);
                break;
            case R.id.font_14:
                txt.setTextSize(14 * 2);
                break;
            case R.id.font_16:
                txt.setTextSize(16 * 2);
                break;
            case R.id.font_18:
                txt.setTextSize(18 * 2);
                break;
            case R.id.red_font:
                txt.setTextColor(Color.RED);
                mi.setChecked(true);
                break;
            case R.id.green_font:
                txt.setTextColor(Color.GREEN);
                mi.setChecked(true);
                break;
            case R.id.blue_font:
                txt.setTextColor(Color.BLUE);
                mi.setChecked(true);
                break;
            case R.id.plain_item:
                Toast toast = Toast.makeText(MainActivity.this, "您单击了普通菜单项",
                        Toast.LENGTH_SHORT);
                toast.show();
                break;
        }
        return true;
    }
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:title="@string/font_size"
		  android:showAsAction="always|withText"
		  android:icon="@drawable/font">
		<menu>
			<!-- 定义一组单选菜单项 -->
			<group android:checkableBehavior="single">
				<!-- 定义多个菜单项 -->
				<item
					android:id="@+id/font_10"
					android:title="@string/font_10"/>
				<item
					android:id="@+id/font_12"
					android:title="@string/font_12"/>
				<item
					android:id="@+id/font_14"
					android:title="@string/font_14"/>
				<item
					android:id="@+id/font_16"
					android:title="@string/font_16"/>
				<item
					android:id="@+id/font_18"
					android:title="@string/font_18"/>
			</group>
		</menu>
	</item>
	<!-- 定义一个普通菜单项 -->
	<item android:id="@+id/plain_item"
		  android:showAsAction="always|withText"
		  android:title="@string/plain_item">
	</item>
	<item android:title="@string/font_color"
		  android:showAsAction="always"
		  android:icon="@drawable/color">
		<menu>
			<!-- 定义一组允许复选的菜单项 -->
			<group>
				<!-- 定义3个菜单项 -->
				<item
					android:id="@+id/red_font"
					android:title="@string/red_title"/>
				<item
					android:id="@+id/green_font"
					android:title="@string/green_title"/>
				<item
					android:id="@+id/blue_font"
					android:title="@string/blue_title"/>
			</group>
		</menu>
	</item>
</menu>

タイトルの時計 - 正常に実行されません

package com.example.myapplication;


import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

import androidx.appcompat.app.AppCompatActivity;


public class MainActivity extends AppCompatActivity {
    ActionBar actionBar;
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        actionBar=getActionBar();
    }

    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.layout.menu_main, menu);
        return true;
    }
}
<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/search"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:actionViewClass="android.widget.SearchView"/>
    <item
        android:id="@+id/progress"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:src="@drawable/ic_launcher_background"
        android:actionLayout="@layout/clock"/>
</menu>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="12dp"
    android:paddingRight="12dp"
    android:paddingTop="12dp"
    android:paddingBottom="12dp"
    tools:context=".MainActivity">

    <TextView
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8" ?>
<AnalogClock
    xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
/>

アクションバーは、フラグメントがタブナビゲーションを実現する組み合わせ

package com.example.myapplication;


import android.os.Bundle;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;


public class MainActivity extends AppCompatActivity implements ActionBar.TabListener {
    public static final String SELECTED_ITEM = "selected_item";

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.addTab(actionBar.newTab().setText("第一页").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("第二页").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("第三页").setTabListener(this));
    }

    public void onRestoreInstanceState(Bundle savedInstanceState) {
        if (savedInstanceState.containsKey(SELECTED_ITEM)) {
            getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(SELECTED_ITEM));
        }
    }

    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(SELECTED_ITEM, getActionBar().getSelectedNavigationIndex());
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        Fragment fragment = new DummyFragment();
        Bundle args = new Bundle();
        args.putInt(DummyFragment.ARG_SECTION_NUMBER, tab.getPosition() + 1);
        fragment.setArguments(args);
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.container, fragment);
        ft.commit();
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }
}
package com.example.myapplication;

import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.fragment.app.Fragment;

public class DummyFragment extends Fragment {
    public static final String ARG_SECTION_NUMBER = "selection_number";

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        TextView textView = new TextView(getActivity());
        textView.setGravity(Gravity.START);
        Bundle args = getArguments();
        textView.setText(args.getInt(ARG_SECTION_NUMBER) + "");
        textView.setTextSize(30);
        return textView;
    }
}

アクションバーには、ドロップダウンメニューを使用して達成しました

package com.example.myapplication;


import android.os.Bundle;
import android.widget.ArrayAdapter;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;


public class MainActivity extends AppCompatActivity implements ActionBar.OnNavigationListener {
    private static final String SELECTED_LETM = "selected_item";

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        actionBar.setListNavigationCallbacks(new ArrayAdapter(
                this, android.R.layout.simple_list_item_1
                , android.R.id.text1, new String[]{"第一页", "第二页", "第三页"}), this);
    }

    public void onRestoreInstanceState(Bundle saveInstanceState) {
        if (saveInstanceState.containsKey(SELECTED_LETM)) {
            getActionBar().setSelectedNavigationItem(saveInstanceState.getInt(SELECTED_LETM));
        }
    }

    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(SELECTED_LETM, getActionBar().getSelectedNavigationIndex());
    }

    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        Fragment fragment=new DummyFragment();
        Bundle args = new Bundle();
        args.putInt(DummyFragment.ARG_SECTION_NUMBER,itemPosition+1);
        fragment.setArguments(args);
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.container,fragment);
        ft.commit();
        return true;
    }
}
package com.example.myapplication;

import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.fragment.app.Fragment;

public class DummyFragment extends Fragment {
    public static final String ARG_SECTION_NUMBER = "selection_number";

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        TextView textView = new TextView(getActivity());
        textView.setGravity(Gravity.START);
        Bundle args = getArguments();
        textView.setText(args.getInt(ARG_SECTION_NUMBER) + "");
        textView.setTextSize(30);
        return textView;
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

公開された349元の記事 ウォンの賞賛161 ビュー190 000 +

おすすめ

転載: blog.csdn.net/qq_42192693/article/details/103651077
おすすめ