ActionBar之添加下拉导航栏
程序开发
2023-09-14 08:25:11
上篇博文中点击打开链接我们实现了向ActionBar中添加tab导航栏,那么这次呢我们实现的是向ActionBar中添加下拉列表。
具体的实现步骤:
1、activity_main.xml文件中只需要给线性或相对布局一个资源id就可以了
2、在values文件夹下的strings.xml文件中定义一个数组资源
3、定义一个MyFragment和自定义一个布局用来显示我们点击不同条目时的值的变化并填充到Activity中
4、在MainActivity中的具体实现。
接下来就是具体是实现代码了:
一、activity_main.xml文件:同样,给个id就可以了
二、在values文件夹下的strings.xml文件中定义一个数组资源
_10ActionBar添加Dropdown Settings Hello world! - 唐僧
- 孙悟空
- 猪八戒
- 沙和尚
三、MyFragment和自定义一个布局:
自定义的布局:只有一个TextView用来显示我们选中条目时传来的值
MyFragment:
package com.example.dropdown;import android.annotation.SuppressLint;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;@SuppressLint("NewApi")
public class MyFragment extends Fragment {private TextView tv;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment, null);tv = (TextView) view.findViewById(R.id.tv);//使用getTag方法获得列表内容切换时传来的值,是MainActivity中replace的第三个参数String name = getTag();tv.setText(name);return view;}
}
四、MainActivity中的具体实现:
package com.example.dropdown;import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.ActionBar.OnNavigationListener;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.view.Menu;
import android.widget.ArrayAdapter;public class MainActivity extends Activity {private ActionBar bar;private MyFragment fragment;private String[] names;@SuppressLint("NewApi")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bar = getActionBar();// 设置为下拉导航模式bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);// 创建适配器ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.names,android.R.layout.simple_dropdown_item_1line);// 设置适配器以及监听器bar.setListNavigationCallbacks(adapter, new MyListener());// 获得自定义的资源文件names = getResources().getStringArray(R.array.names);}// 设置选中条目时的点击事件@SuppressLint("NewApi")class MyListener implements OnNavigationListener {@Overridepublic boolean onNavigationItemSelected(int itemPosition, long itemId) {// 实例化我们自定义的Fragment对象fragment = new MyFragment();// 获取事务FragmentTransaction transaction = getFragmentManager().beginTransaction();// 替换Activity中的布局并用第三个参数把选中的条目所对应的值传递给Fragmenttransaction.replace(R.id.container, fragment, names[itemPosition]);// 提交事务transaction.commit();// 把返回值改为truereturn true;}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
运行结果:
标签:
上一篇:
angular4项目如何使用sass
下一篇:
相关文章
-
无相关信息