Android在fragment中編寫(xiě)toobar的步驟詳解
第一步的話就是首先導(dǎo)入我們的依賴(lài)的包:
compile 'com.android.support:appcompat-v7:23.3.0'
第二步的話就是準(zhǔn)備我們的布局文件和我們的item
在這的話我是將我們的toobar單獨(dú)的放在一個(gè)布局文件中的方便以后的調(diào)用以及將我們的主題改為
我們noactionbar,同時(shí)在我們的主文件中進(jìn)行引用
修改為nopactionbar

引用

設(shè)置單獨(dú)的xml文件

然后的話就是我們?cè)谖覀兊倪@個(gè)位置設(shè)置的是我們的啊就是toobar的單獨(dú)的一個(gè)文件代碼如下:
<?xml version="1.0" encoding="utf-8"?> <androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toobar" android:background="#00E109" android:minHeight="?attr/actionBarSize" android:layout_width="match_parent" android:layout_height="wrap_content"> <!--現(xiàn)在的這個(gè)位置的話是我們的toobar的工具類(lèi)我們將toobar 的工具類(lèi)創(chuàng)建出來(lái)后就是方便在我們的程序要用到的任何的地方調(diào)用--> </androidx.appcompat.widget.Toolbar>
第三步: 然后的話就是編寫(xiě)我們的就是啊item就是我們的菜單項(xiàng)

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:icon="@drawable/ic_baseline_youtube_searched_for_24" android:id="@+id/search" android:title="搜索" android:orderInCategory="80" app:showAsAction="ifRoom" /> <item android:icon="@drawable/ic_sharp_share_24" android:id="@+id/share" android:title="分享" android:orderInCategory="80" app:showAsAction="ifRoom" /> <item android:icon="@drawable/ic_baseline_drag_indicator_24" android:id="@+id/other" android:title="更多" android:orderInCategory="80" app:showAsAction="ifRoom" /> </menu>
然后的話是我們的就是frgment的布局的代碼中進(jìn)行引用:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.home.HomeFragment">
<!--這個(gè)位置的話是那我們的首頁(yè)面的布局文件然后的話就是實(shí)現(xiàn)我們的首頁(yè)面的功能
todo 使用線性布局,然后的話是我們的就是搜索框
-->
<!-- todo 在我們的這個(gè)位置就是將我們的toobar引入進(jìn)來(lái)-->
<include layout="@layout/toobarutil"/>
<!--todo 使用我們的scrollview進(jìn)行布局-->
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.SearchView
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
<!--todo 在我們的這里的話使用我們的banner和我們的glide實(shí)現(xiàn)我們男的圖片的輪播-->
<com.youth.banner.Banner
android:id="@+id/Banner"
android:layout_width="match_parent"
android:layout_height="250dp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
最后的話就是我們的java代碼部分了:

package com.example.smartcityend.ui.home;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SurfaceControl;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.bumptech.glide.Glide;
import com.example.smartcityend.BuildConfig;
import com.example.smartcityend.R;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoader;
import java.util.ArrayList;
import java.util.List;
public class HomeFragment extends Fragment implements OnBannerListener {
private Banner banner;
private Toolbar toolbar;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_home, container, false);
return root;
}
//todo 接下來(lái)的話實(shí)現(xiàn)我們的圖片的輪播使用我們的banner,在我們的就是onviewcreate中編寫(xiě)我們的代碼
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Banner(); // 調(diào)用輪播的方法
Toobar(); // 調(diào)用toobar的方法
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
((AppCompatActivity) getActivity()).getMenuInflater().inflate(R.menu.toobar_title,menu);
return ;
// todo 這個(gè)方法也是伴隨著我們的就是toobar存在的作用就是在我們的onsetmenuitemclickn的回調(diào)
}
private void Toobar() {
// 接下來(lái)的話就是調(diào)用我們的toobar的方法 找到我們的toobar的id
toolbar = (Toolbar) getActivity().findViewById(R.id.toobar);
// 調(diào)用actionbar的方法將actionbar設(shè)置為自己的toobar
setHasOptionsMenu(true);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
// 獲取actionbar的對(duì)象使用action的方法
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// 然后的話就是設(shè)置我們的toobar的主題等
toolbar.setTitle("首頁(yè)");
// 設(shè)置我們的副標(biāo)題
toolbar.setSubtitle("智慧城市");
// 設(shè)置我們的導(dǎo)航菜單
toolbar.setNavigationIcon(R.drawable.ic_baseline_chevron_left_24);
// 然后的話為我們的導(dǎo)航菜單添加點(diǎn)擊事件
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 然后的話就是為我們的返回圖標(biāo)添加點(diǎn)擊事件這里的話我們就為我們的返回圖標(biāo)添加點(diǎn)擊返回事件
}
});
// 設(shè)置菜單的就是啊彈出的樣式和背景
toolbar.setPopupTheme(R.style.Widget_AppCompat_ActionBar_Solid);
// 設(shè)置我們的菜單 todo 要另外在我們的菜單的布局文件中添加我們的就是啊xml布局
toolbar.inflateMenu(R.menu.bottom_nav_menu);
// 然后的話就是為我們的啊查菜單項(xiàng)設(shè)置點(diǎn)擊事件
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// 然后的話就是為我們的菜單項(xiàng)設(shè)置我們的點(diǎn)擊監(jiān)聽(tīng)事件
switch (item.getItemId()){
case R.id.search:
Toast.makeText( getContext(),"你點(diǎn)擊的是搜索按鈕", Toast.LENGTH_SHORT).show();
break;
case R.id.share:
Toast.makeText(getActivity(),"你點(diǎn)擊的是分享按鈕",Toast.LENGTH_LONG).show();
break;
case R.id.other:
Toast.makeText(getActivity(),"謝謝分享",Toast.LENGTH_LONG).show();
break;
default:
}
return true;
}
});
}
private void Banner(){
// todo step1: 找到我們的就是id,轉(zhuǎn)換 為成員變量方便在其他的位置調(diào)用
banner = (Banner) getActivity().findViewById(R.id.Banner);
// 創(chuàng)建我們的存放圖片的數(shù)組將我們的圖片存放進(jìn)去
int[] images = new int[]{
// 在我們的這個(gè)位置存放我們的圖片
R.mipmap.banner1,R.mipmap.banner2,R.mipmap.banner3,R.mipmap.banner4,R.mipmap.banner5
};
// 創(chuàng)建我們的列表放置我們的圖片的信息
List<Integer> iamgesList = new ArrayList<>();
// 然后的話就是使用我們的數(shù)組添加我們的圖片的信息
for(int i = 0; i<images.length; i++){
iamgesList.add(images[i]); // 將我們男的圖片添加到我們的列表中
// 設(shè)置我們的圖片加載器
banner.setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
// 圖片加載器
Glide.with(getActivity()).load(path).into(imageView);
}
});
// 然后的話就是我們的banner和我們的隔離的自帶的圖片輪播效果
banner.setBannerAnimation(Transformer.Default);
// 將我們的圖片從列表中加載進(jìn)來(lái)
banner.setImages(iamgesList);
// 設(shè)置我們的顯示器的位置
banner.setIndicatorGravity(BannerConfig.CENTER);
// 然后的話就是設(shè)置我們的切換的間隔時(shí)間
banner.setDelayTime(5000);
// 設(shè)置我們的輪播監(jiān)聽(tīng)事件
banner.setOnBannerListener(this);
//然后的話就是我們的圖片的輪播自動(dòng)開(kāi)始
banner.start();
}
}
// todo 在我們的這個(gè)位置重寫(xiě)我們的onstart和onstop方法 banner
@Override
public void onStart() {
super.onStart();
// 開(kāi)始
banner.startAutoPlay();
}
@Override
public void onStop() {
super.onStop();
// 停止
banner.stopAutoPlay();
}
@Override
public void OnBannerClick(int position) {
// 設(shè)置我們的輪播圖的點(diǎn)擊提示
Toast.makeText(getActivity(),"你點(diǎn)擊了第"+(position+1)+"張輪播圖",Toast.LENGTH_LONG).show();
}
}
// todo 好現(xiàn)在的話我們可以看到我們的搜索框模塊和我們的輪播圖的模塊是已經(jīng)創(chuàng)建完成了現(xiàn)在的話就是開(kāi)始封裝我們的就是toobar模塊讓我們的toobar模塊可以在我們的各處調(diào)用

到此這篇關(guān)于Android在fragment中編寫(xiě)toobar的步驟詳解的文章就介紹到這了,更多相關(guān)Android fragment toobar內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android計(jì)步功能的實(shí)現(xiàn)代碼
本篇文章主要介紹了Android計(jì)步功能的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Flutter?頁(yè)面跳轉(zhuǎn)和傳值的實(shí)現(xiàn)
跳轉(zhuǎn)傳值是再普通不過(guò)的小功能了,在開(kāi)發(fā)中會(huì)經(jīng)常用到,比如列表進(jìn)入詳情,本文主要介紹了Flutter?頁(yè)面跳轉(zhuǎn)和傳值的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
Android 系統(tǒng)簽名 keytool-importkeypair的操作步驟
本文介紹了在Android項(xiàng)目中使用系統(tǒng)簽名并打包APK的方法,步驟包括獲取系統(tǒng)簽名文件、修改AndroidManifest.xml、轉(zhuǎn)換簽名文件、配置Android Studio簽名、生成APK文件和打包APK,感興趣的朋友一起看看吧2025-01-01
Android?Studio中如何修改APP圖標(biāo)和APP名稱(chēng)
這篇文章主要介紹了Android?Studio中如何修改APP圖標(biāo)和APP名稱(chēng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Android?ViewPager2?+?Fragment?聯(lián)動(dòng)效果的實(shí)現(xiàn)思路
這篇文章主要介紹了Android?ViewPager2?+?Fragment?聯(lián)動(dòng),本篇主要介紹一下 ViewPager2 + Fragment聯(lián)動(dòng)效果的實(shí)現(xiàn)思路,需要的朋友可以參考下2022-12-12
深入了解Android中GestureDetector的定義與使用
Android中的GestureDetector?可以使用?MotionEvents?檢測(cè)各種手勢(shì)和事件,非常的好用。本文將會(huì)通過(guò)幾個(gè)具體的例子來(lái)講解一下GestureDetector的具體使用方法,需要的可以參考一下2023-01-01
Android 自定義View實(shí)現(xiàn)計(jì)時(shí)文字詳解
這篇文章主要為大家介紹了Android 自定義View實(shí)現(xiàn)計(jì)時(shí)文字詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Android設(shè)置Activity背景為透明style的簡(jiǎn)單方法(必看)
下面小編就為大家?guī)?lái)一篇Android設(shè)置Activity背景為透明style的簡(jiǎn)單方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10

