日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

工具栏,底部导航栏,可扩展列表视图

發(fā)布時(shí)間:2024/1/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 工具栏,底部导航栏,可扩展列表视图 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.工具欄

這個(gè)概念,所接觸的很多開(kāi)發(fā)軟件或工具,都會(huì)碰到。在手機(jī)開(kāi)發(fā)的時(shí)候,可以進(jìn)行導(dǎo)航、顯示相應(yīng)的標(biāo)題等,使開(kāi)發(fā)者不至于在應(yīng)用程序中迷路。5.0使用Actionbar來(lái)實(shí)現(xiàn),很多公司都會(huì)對(duì)該類進(jìn)行定制,使用起來(lái)更加靈活。5.0之后使用Toolbar來(lái)取代之前的Actionbar,這個(gè)更加強(qiáng)大。

1.1 Toolbar類

1.顯示程序所處的位置。

2.提供一些重要的交互功能,比如說(shuō)搜索、跳轉(zhuǎn)等。

3.實(shí)現(xiàn)導(dǎo)航功能,例如返回按鈕等。

常用屬性和方法:

app:title setTitle(參數(shù)) 設(shè)置應(yīng)用程序主題

app:subtitle setSubtitle(參數(shù)) 設(shè)置小標(biāo)題

app:navigation setNavigation(int resId) 導(dǎo)航圖標(biāo)

logo setLogo(Drawable drawable) 程序logo

titleTextColor setTitleTextColor(int color) 設(shè)置標(biāo)題文字顏色

1.設(shè)計(jì)主界面.xml

<?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:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><!-- 加入工具欄;android.support.v7.wideget.Toolbar--><Toolbarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/toolbar"android:background="#9f9f9f"></Toolbar> </LinearLayout>

2.設(shè)計(jì)菜單xml文件

步驟:

在res上右擊,選擇“new/andorid Resource Directory”,在彈出的對(duì)話框中,設(shè)置ResourceType為Menu,Directory Name采用默認(rèn)值,即可創(chuàng)建menu文件夾。

在menu上右擊,選擇“new/menu Resourcefile”,輸入文件名。

<?xml version="1.0" encoding="utf-8"?> <!--這里是以menu開(kāi)頭的自定義標(biāo)簽--> <menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><!-- 創(chuàng)建4個(gè)小選項(xiàng);showAsAction:ifRoomifRoom:表示有位置才顯示;always:總是顯示在界面上;never:從不顯示在界面上;--><itemandroid:icon="@mipmap/sousuo"android:title="搜索"android:id="@+id/action_find"app:showAsAction="ifRoom"/><itemandroid:icon="@mipmap/fenxiang"android:id="@+id/fenxiang"android:title="分享"app:showAsAction="ifRoom"/><itemandroid:title="設(shè)置"android:id="@+id/item1"app:showAsAction="never"/><itemandroid:title="關(guān)于"android:id="@+id/item2"app:showAsAction="never"/> </menu>

3.修改主界面后臺(tái)代碼

package com.aaa.toolbardemo;import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color; import android.os.Bundle; import android.widget.Toolbar;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//----------------------------------------Toolbar toolbar=(Toolbar) findViewById(R.id.toolbar);//導(dǎo)航加一個(gè)后退toolbar.setNavigationIcon(R.mipmap.houtui);toolbar.setTitle("首頁(yè)");toolbar.setTitleTextColor(Color.WHITE);//聲明菜單文件toolbar.inflateMenu(R.menu.base_toolbar_menu);} }

2.底部導(dǎo)航欄

手機(jī)程序:QQ 拼夕夕 微信等,都會(huì)在程序下方放置導(dǎo)航。好處是可以進(jìn)行單手操作,即用戶單手完成界面切換,從而查看不同的信息。

2.1 BottomNavigationView類

用到了Fragment的知識(shí),每個(gè)item都有一個(gè)icon和一個(gè)title組成,單擊控制狀態(tài)即可。

通話(電話) 通信錄 設(shè)置

3.可擴(kuò)展列表視圖

一般用于數(shù)據(jù)的展開(kāi)和折疊這種場(chǎng)景,即可以單獨(dú)展開(kāi)的列表視圖。

ExpandableListView,是ListView的子類。本質(zhì)上是一個(gè)AdapterView,既然是AdapterView,在顯示數(shù)據(jù)的時(shí)候,就需要使用到適配器。適配器叫ExpandableAdapter,這個(gè)類派生于BaseExpandableListAdapter,需要重寫(xiě)setOnGroupClickListener()、setOnChildClickListener()、setOnGroupCollpaseListener()、setOnGroupExpandListener()方法。

實(shí)例

展示河南省、陜西省行政區(qū)信息的實(shí)例。

1.修改主界面

<?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=".MainActivity"> <!-- 主界面就是可擴(kuò)展列表;android:groupIndicator="@null" 取值可以是任意的Drawable對(duì)象,不再顯示groupIndicator --><ExpandableListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/expand_list"android:groupIndicator="@null"/></LinearLayout>

2.父項(xiàng)列表內(nèi)容

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:background="#3f60CC"android:layout_height="50dp"><!-- 設(shè)計(jì)列表項(xiàng)的布局 --><TextViewandroid:layout_width="wrap_content"android:layout_height="match_parent"android:id="@+id/parent_tv"android:textColor="#fff"android:gravity="center_vertical"android:paddingLeft="10dp"android:textSize="18sp"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/parent_img"android:layout_alignParentRight="true"android:src="@mipmap/right"android:paddingRight="10dp"/> </RelativeLayout>

3.子項(xiàng)列表內(nèi)容

<?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"><!-- 設(shè)計(jì)列表項(xiàng)的具體數(shù)據(jù)的布局--><TextViewandroid:layout_width="match_parent"android:layout_height="40dp"android:id="@+id/children_item"android:gravity="center_vertical"android:paddingLeft="10dp"/> </LinearLayout>

4.主界面后臺(tái)代碼

package com.aaa.expanddemo;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.View; import android.widget.ExpandableListView; import android.widget.Toast;public class MainActivity extends AppCompatActivity {//1.變量 對(duì)象ExpandableListView expand_list_id;String[]groups={"河南省","陜西省"};String[][]childs={{"鄭州市","安陽(yáng)市","駐馬店市"},{"西安市","咸陽(yáng)市","寶雞市"}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//--------------------------------------initView();// 這個(gè)是自定義的方法}private void initView() {expand_list_id=(ExpandableListView)findViewById(R.id.expand_list);ExpandableListViewAdapter adapter=new ExpandableListViewAdapter(this,groups,childs);expand_list_id.setAdapter(adapter);expand_list_id.expandGroup(0);//監(jiān)聽(tīng)事件expand_list_id.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {@Overridepublic boolean onGroupClick(ExpandableListView expandableListView, View view, int groupPosition, long l) {Toast.makeText(MainActivity.this, "你單擊了"+groups[groupPosition], Toast.LENGTH_LONG).show();return false;}});//監(jiān)聽(tīng)事件2expand_list_id.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {@Overridepublic boolean onChildClick(ExpandableListView expandableListView, View view, int groupPosition, int childPosition, long l) {Toast.makeText(MainActivity.this, "你單擊了"+childs[groupPosition][childPosition], Toast.LENGTH_LONG).show();return false;}});//監(jiān)聽(tīng)事件3expand_list_id.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {@Overridepublic void onGroupCollapse(int groupPosition) {Toast.makeText(MainActivity.this, "你收縮了"+groups[groupPosition], Toast.LENGTH_LONG).show();}});//監(jiān)聽(tīng)4expand_list_id.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {@Overridepublic void onGroupExpand(int groupPosition) {Toast.makeText(MainActivity.this, "你展開(kāi)了"+groups[groupPosition], Toast.LENGTH_LONG).show();}});} }

5.子項(xiàng)擴(kuò)展代碼

package com.aaa.expanddemo;import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.ImageView; import android.widget.TextView;public class ExpandableListViewAdapter extends BaseExpandableListAdapter {//1.成員變量private String[]groups;private String[][]childs;private Context context;//構(gòu)造方法,和IDEA一樣。public ExpandableListViewAdapter(Context context,String[] groups, String[][] childs) {this.groups = groups;this.childs = childs;this.context = context;}@Overridepublic int getGroupCount() {return groups.length;}@Overridepublic int getChildrenCount(int i) {return childs[i].length;}@Overridepublic Object getGroup(int i) {return groups[i];}@Overridepublic Object getChild(int i, int i1) {return childs[i][i1]; //?}@Overridepublic long getGroupId(int i) {return i;}@Overridepublic long getChildId(int i, int i1) {return i1;}@Overridepublic boolean hasStableIds() {return true;}/*** 用于加載并顯示列表項(xiàng)元素。* @param groupPosition 為組位置* @param isExpanded 是否折疊或伸縮狀態(tài)* @param convertView 重用已經(jīng)的視圖對(duì)象* @param parent 返回視圖所衣服的視圖組。* @return*/@Overridepublic View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {TextView tv_grouptext;ImageView img_group;convertView= LayoutInflater.from(parent.getContext()).inflate(R.layout.expand_parent_item,parent,false);tv_grouptext=convertView.findViewById(R.id.parent_tv);img_group=convertView.findViewById(R.id.parent_img);tv_grouptext.setText(groups[groupPosition]);if(isExpanded)img_group.setImageResource(R.mipmap.down);elseimg_group.setImageResource(R.mipmap.right);return convertView;}/*** 重寫(xiě)getChildView()方法.* isLastChild:表示是否為最后一項(xiàng)列表數(shù)據(jù)。* @param groupPosition* @param childPosition* @param isLastChild* @param convertView* @param parent* @return*/@Overridepublic View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {//映射列表數(shù)據(jù)使用的布局文件convertView=LayoutInflater.from(parent.getContext()).inflate(R.layout.expand_children_item,parent,false);//獲取列表數(shù)據(jù)對(duì)應(yīng)的控件TextView tv_children_item=(TextView) convertView.findViewById(R.id.children_item);//顯示列表數(shù)據(jù)tv_children_item.setText(childs[groupPosition][childPosition]);return convertView;}@Overridepublic boolean isChildSelectable(int i, int i1) {return true;} }

6.程序運(yùn)行效果

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-AIV9upcz-1634471942405)(asseits/image-20211008201729316.png)]

TextView tv_children_item=(TextView) convertView.findViewById(R.id.children_item);
//顯示列表數(shù)據(jù)
tv_children_item.setText(childs[groupPosition][childPosition]);
return convertView;
}

@Override public boolean isChildSelectable(int i, int i1) {return true; }

}

### 6.程序運(yùn)行效果![在這里插入圖片描述](https://img-blog.csdnimg.cn/7e51d38fcadc40e3a254227d7da75586.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAdGVhX3llYXI=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)![在這里插入圖片描述](https://img-blog.csdnimg.cn/0402872db558469d8d1392c07aae1765.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAdGVhX3llYXI=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

總結(jié)

以上是生活随笔為你收集整理的工具栏,底部导航栏,可扩展列表视图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。