
4.6、Bootstrap V4自学之路------组件---下拉列表
示例
把弹出菜单的触发器以及弹出菜单包裹在一个.dropdown
中,或者其它声明了position:relative;
的元素中。然后,添加菜单的HTML。
<div >
<button type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</button>
<div aria-labelledby="dropdownMenu1">
<a href="#">Action</a>
<a href="#">Another action</a>
<a href="#">Something else here</a>
</div>
</div>
PS:新知识点的话,则是 .open类。加上之后是打开状态。
按钮元素
你可以视情况在你的弹出菜单中使用<button>
元素,而不是<a>
元素。
<div >
<button type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</button>
<div aria-labelledby="dropdownMenu2">
<button type="button">Action</button>
<button type="button">Another action</button>
<button type="button">Something else here</button>
</div>
</div>
PS:这里要注意的是在菜单列表中,<button>标签替代了<a>。
如果说两者有什么差别的话。我想到了之前看文档上所说的,form表单。
form控件,无法管理到<a>标签。参考form 表单文档。
对齐
默认情况下,一个弹出菜单的菜单是自动放置在父元素下面,与父元素左侧对齐。给.dropdown-menu
添加.dropdown-menu-right
类能使菜单向右侧对齐。
<div >
<button type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</button>
<div aria-labelledby="dropdownMenu2">
<button type="button">Action</button>
<button type="button">Another action</button>
<button type="button">Something else here</button>
</div>
</div>
PS:当使用 .dropdown-menu-right类。需要设置父类框的宽度。
菜单头部
在任何一个弹出菜单添加一个头部以标记活动的分区。
<div >
<button type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</button>
<div >
<h6 >Dropdown header</h6>
<a href="#">Action</a>
<a href="#">Another action</a>
</div>
</div>
</div>
PS:添加 .dropdown-header类。则标签固定且不可编辑。
菜单分隔线
使用一个分隔线来对相关的菜单项分组。
<div >
<button type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</button>
<div >
<a href="#">Action</a>
<a href="#">Another action</a>
<a href="#">Something else here</a>
<div ></div>
<a href="#">Separated link</a>
</div>
</div>
PS:看到之前的文档里,使用过这个属性 .dropdown-divider类
禁用的菜单项
对弹出菜单中的某一项添加.disabled
类,可以把它们样式化为不可用。
<div >
<button type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</button>
<div >
<a href="#">Regular link</a>
<a href="#">Disabled link</a>
<a href="#">Another link</a>
</div>
</div>
用法
依靠数据属性或者JavaScript,通过切换菜单项的父元素上的.open
类,弹出菜单插件可以切换内容(弹出菜单)的可见性。
在移动设备上,打开一个弹出菜单会添加一个.dropdown-backdrop
作为轻触区域,如果在菜单外面轻触时弹,菜单会关闭。这是支持iOS设备的要求。这意味着在移动设备上,从一个打开的弹出菜单切换到另一个弹出菜单至少需要两次轻触。
注意:data-toggle="dropdown"
属性是关闭弹出菜单的菜单在应用程序级别的依靠。所以最好一直使用它。
利用数据属性
给一个链接或者按钮添加一个data-toggle="dropdown"
以切换一个弹出菜单。
不截图了。关键是指data-toggle="dropdown"存在的位置、和对应的关系。
<div >
<button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown trigger
</button>
<div aria-labelledby="dLabel">
...
</div>
</div>
为了保持URL与链接按钮交互,请使用data-target
属性而不是href="#"
。
<div >
<a id="dLabel1" data-target="#" href="http://example.com" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown trigger
</a>
<div aria-labelledby="dLabel1">
<a href="#">Regular link</a>
<a href="#">Disabled link</a>
<a href="#">Another link</a>
</div>
</div>
这样的样式有些难看。。。。(吐槽~_~!)
利用JavaScript
$(''.dropdown-toggle'').dropdown()
选项
无?
方法
$().dropdown(''toggle'')
对给定的导航条或轻触导航触发弹出菜单的菜单
PS:这里我尝试了,但是效果是触发点击效果,但不弹出菜单。
事件
所有的弹出菜单事件都是在.dropdown-menu
的父元素上触发的,这个父元素都有一个relatedTarget
属性,它的值是触发的锚元素。
事件 |
描述 |
show.bs.dropdown |
当调用显示实例的方法时,会立即触发该事件。 |
shown.bs.dropdown |
当弹出菜单已经对用户可见时(需要等待CSS 过渡完成),会触发该事件。 |
hide.bs.dropdown |
当调用隐藏实例的方法时,会立即触发该事件。 |
hidden.bs.dropdown |
当弹出菜单已经对用户不可见时(需要等待CSS 过渡完成),会触发该事件。 |
$(''#myDropdown'').on(''show.bs.dropdown'', function () {
// do something…
})

android 基本控件示例 Spinner 下拉列表 (04)
/* simpleadapteractivity_main.xml,这个是自定义的下拉列表布局,用来给activity_main.xml 布局的下拉列表显示图片跟选项*/
public class SimpleApapterfMainActivity extends Activity {
private Spinner sp;
private TextView txt;
private SimpleAdapter simpleadapter;
private int []image={R.drawable.bump,R.drawable.calculator,R.drawable.music,R.drawable.radio,R.drawable.rss,R.drawable.score
,R.drawable.sky,R.drawable.talk};
private String[]str={"小学","初中","高中","大学","研究生","硕士","博士","博士后"};//数据源
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sp=(Spinner) this.findViewById(R.id.sp);
txt=(TextView) this.findViewById(R.id.txt);
//data是map键值对的数据,自定义类型要用自己定义数据
List<Map<String, Object>> data=new ArrayList<Map<String,Object>>();
//将前面定义的数组数据,装载到data里面
for(int i=0;i<image.length;i++ ){
Map<String ,Object>itemMap=new HashMap<String ,Object>();
itemMap.put("header", image[i]);
itemMap.put("name", str[i]);
//这里的"header"和"name"是随便给的,只是到时候取值要记得自己的键去取值
data.add(itemMap);
}
/**
* SimpleAdapter(context, data, resource, from, to)
* context:上下文
* data:数据是map键值对,加到list集合中
* resource:自定义的布局,现在用的安卓自带的显示布局模式:android.R.layout.simple_list_item_1
* from:字符串类型的键
* to:整形的自定义布局,即控件的id
*/
//将自己定义的布局给适配器:自己建一个布局文件R.layout.simpleadapteractivity_main
simpleadapter=new SimpleAdapter(this, data, R.layout.simpleadapteractivity_main, new String[]{"header","name"}, new int[]{R.id.header,R.id.txt});
sp.setAdapter(simpleadapter);
//设置监听
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
//怎么获取自定义的内容
//通过适配器获取该位置的内容,也就是键key,再根据键key获取内容键值
Map<String ,Object>item=(Map<String, Object>) simpleadapter.getItem(position);
Log.i("simpleAd", item+"");
txt.setText(item.get("name")+"");
Log.i("simpleAd", item.get("name")+"");
/* //适配器获取点击的内容, ArrayAdapter
//法1:
String data1=sp.getSelectedItem().toString();
//法2:
String data2=parent.getSelectedItem().toString();
//法3:
String data3=parent.getItemAtPosition(position).toString();
//法4:
//String data4=adapter.getItem(position);
//txt.setText(data1+","+data2+","+data3+","+data4);
*/ }
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public void submit(View view){
String data=sp.getSelectedItem().toString();
txt.setText(data);
}
}
//主布局文件
<LinearLayout 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:orientation="vertical"
>
<!-- 下拉列表 -->
<Spinner
android:id="@+id/sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提交"
android:onClick="submit"
/>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
/>
</LinearLayout>
//自定义布局文件
<LinearLayout 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:orientation="horizontal"
>
<!-- 这个是自定义的下拉列表布局,用来给activity_main.xml 布局的下拉列表显示图片跟选项-->
<!-- 这是跟选项显示在下拉列表中的,所以图片要小一下 android:scaleType="centerInside"根据图片大小居中,不会拉伸 -->
<ImageView
android:id="@+id/header"
android:layout_width="40dp"
android:layout_height="40dp"
android:scaleType="centerInside"
/>
<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:gravity="center"
/>
</LinearLayout>
今天关于WordPress:“编辑类别”页面中的“多选”下拉列表和wordpress菜单实现下拉的讲解已经结束,谢谢您的阅读,如果想了解更多关于.HTML 页面中的 PHP 未在 Nginx 上解析、/url 页面中的 Javascript 功能在使用 history.push(/url) onlick 后不起作用、4.6、Bootstrap V4自学之路------组件---下拉列表、android 基本控件示例 Spinner 下拉列表 (04)的相关知识,请在本站搜索。