经常刚可以看到悬浮控件,比如印象笔记的下面那个绿色的悬浮按钮,这个控件非常简单也是来自Design Support Library中同理需要在Android studio中加入依赖库:design库
具体操作可以参考我前一篇http://blog.csdn.net/xsf50717/article/details/49405309
使用起来也很简单,下面是效果图
最下角是我真机的悬浮按钮,直接忽略吧
首先就是布局文件
- <RelativeLayout 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"
- tools:context=".MainActivity">
- <ListView
- android:id="@+id/id_lv_msgs"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- />
- <android.support.design.widget.FloatingActionButton
- android:id="@+id/id_fab_toSend"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_centerHorizontal="true"
- android:layout_marginBottom="@dimen/fab_margin"
- android:src="@drawable/icon_to_send"
- app:backgroundTint="#0ddcff"
- app:borderWidth="0dp">
- </android.support.design.widget.FloatingActionButton>
- </RelativeLayout>
加入了app空间的一些属性
这里要注意的是:
在5.x的设备上运行,你会发现一些问题(测试系统5.0):
【没有阴影】记得设置app:borderWidth="0dp"。
按上述设置后,阴影出现了,但是竟然有矩形的边界(未设置margin时,可以看出)
需要设置一个margin的值。在5.0之前,会默认就有一个外边距(不过并非是margin,只是效果相同)。
因此
添加属性app:borderWidth="0dp"
对于5.x设置一个合理的margin,在values dimen文件
<dimen name="fab_margin">16dp</dimen>
要是还想炫酷点可以在自己设置selector+shape加点特效
主文件也很简单
- package com.elvis.floatactionbuttondemo;
- import android.os.Bundle;
- import android.support.design.widget.FloatingActionButton;
- import android.support.v7.app.AppCompatActivity;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- import android.widget.Toast;
- public class MainActivity extends AppCompatActivity {
- private ListView mLvMsgs;
- private FloatingActionButton mFabToSend;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initViews();
- intiEvent();
- }
- private void intiEvent() {
- mFabToSend.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Toast.makeText(getApplicationContext(), "CLICK", Toast.LENGTH_SHORT).show();
- }
- });
- }
- private void initViews() {
- mLvMsgs = (ListView) findViewById(R.id.id_lv_msgs);
- mFabToSend = (FloatingActionButton) findViewById(R.id.id_fab_toSend);
- mLvMsgs.setAdapter(new ArrayAdapter<String>(this,R.layout.item_msg,COUNTRIES));
- }
- //数据
- private static final String[] COUNTRIES=new String[]{"A","B","C","D"};
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_main, menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id = item.getItemId();
- //noinspection SimplifiableIfStatement
- if (id == R.id.action_settings) {
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- }
比较简单,不贴demo了
转载:http://blog.csdn.net/xsf50717/article/details/49407867