Android新特性之一

来源:互联网 发布:淘宝胡公子评价 编辑:程序博客网 时间:2024/06/18 15:43

【转载请注明出处:http://blog.csdn.net/feiduclear_up/article/details/46500865 CSDN 废墟的树】

这里写图片描述

在前不久的谷歌2015 I/O大会上,发布了Android新版本M,貌似从这个版本开始Android不在以数字命名版本了。

在这次的I/O大会上谷歌对Android并没有很大的改变,主要是修改完善之前Android L版本。不过在谷歌推出

Material Design设计风格之后,还是做了很多风格上的兼容,比如v7包的 RecyclerView,CardView,Palette等

这次的I/O大会上也继续完善了MD设计支持库,这次谷歌推出了Android Design Support Library 库,全面支持

MD设计风格的UI效果。Design Support Library库吸收了8 个新的 material design 组件!最低支持 Android

2.1,其实很多组件都是Github上比较火的,只是谷歌把它官方化了,便于开发者使用。今天我们来学习

FloatingActionButton,TextInputLayout,Snackbar,TabLayout 四种控件。

前提

为了能使用 这些 material design 组件,你需要去更新最新的SDK中的Extras支持库,如下图:

这里写图片描述

ps:在天朝上国,这种更新是需要翻墙的或者使用代理的,大家自行想办法。

更新完之后,在build.gralde文件下引入如下包:

<code class="hljs bash has-numbering">compile <span class="hljs-string">'com.android.support:design:22.2.0'</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

现在,我们可以开始使用Material Design组件啦!来看看新组件有什么特别的地方吧!

FloatingActionButton

顾名思义:这是一个浮动按钮。先上效果图啦!ps:没有效果图的UI博客很蛋疼的。

这里写图片描述

以上是三种不同效果的FloatingActionButton。XML布局代码如下:

<code class="hljs avrasm has-numbering">  <android<span class="hljs-preprocessor">.support</span><span class="hljs-preprocessor">.design</span><span class="hljs-preprocessor">.widget</span><span class="hljs-preprocessor">.FloatingActionButton</span>            android:layout_width=<span class="hljs-string">"wrap_content"</span>            android:layout_height=<span class="hljs-string">"wrap_content"</span>            android:src=<span class="hljs-string">"@drawable/ic_discuss"</span>             /></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

由于FloatingActionButton是重写ImageView的,所有FloatingActionButton拥有ImageView的一切属性。为了

控制FloatingActionButton的大小,背景颜色,阴影的深度等,我们可以通过如下属性来控制这些效果:

  1. app:fabSize :FloatingActionButton的大小,有两种赋值分别是 “mini” 和 “normal”,默认是“normal”.
  2. app:backgroundTint:FloatingActionButton的背景颜色,默认的背景颜色是Theme主题中的
<code class="hljs applescript has-numbering"><<span class="hljs-property">item</span> <span class="hljs-property">name</span>=<span class="hljs-string">"colorAccent"</span>><span class="hljs-comment">#ff0000</item></span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

颜色,不了解的童鞋们可以参考Android5.x新特性之 Toolbar和Theme的使用:http://blog.csdn.net/feiduclear_up/article/details/46457433。
3. app:elevation :FloatingActionButton阴影的深度,默认是有阴影的,如果觉得默认阴影深度有点大,可以改变这个属性来修改阴影深度。

上面三个效果图的XML布局代码如下:

<code class="hljs avrasm has-numbering">  <LinearLayout        android:layout_width=<span class="hljs-string">"match_parent"</span>        android:layout_height=<span class="hljs-string">"wrap_content"</span>        android:orientation=<span class="hljs-string">"horizontal"</span>>        <android<span class="hljs-preprocessor">.support</span><span class="hljs-preprocessor">.design</span><span class="hljs-preprocessor">.widget</span><span class="hljs-preprocessor">.FloatingActionButton</span>            android:id=<span class="hljs-string">"@+id/btn"</span>            android:layout_width=<span class="hljs-string">"wrap_content"</span>            android:layout_height=<span class="hljs-string">"wrap_content"</span>            android:src=<span class="hljs-string">"@drawable/ic_discuss"</span>            app:fabSize=<span class="hljs-string">"mini"</span> />        <android<span class="hljs-preprocessor">.support</span><span class="hljs-preprocessor">.design</span><span class="hljs-preprocessor">.widget</span><span class="hljs-preprocessor">.FloatingActionButton</span>            android:layout_width=<span class="hljs-string">"wrap_content"</span>            android:layout_height=<span class="hljs-string">"wrap_content"</span>            android:src=<span class="hljs-string">"@drawable/ic_discuss"</span>             />        <android<span class="hljs-preprocessor">.support</span><span class="hljs-preprocessor">.design</span><span class="hljs-preprocessor">.widget</span><span class="hljs-preprocessor">.FloatingActionButton</span>            android:layout_width=<span class="hljs-string">"wrap_content"</span>            android:layout_height=<span class="hljs-string">"wrap_content"</span>            android:src=<span class="hljs-string">"@drawable/ic_discuss"</span>            app:backgroundTint=<span class="hljs-string">"#000af4"</span>            app:fabSize=<span class="hljs-string">"normal"</span>            app:elevation=<span class="hljs-string">"1dp"</span>             />    </LinearLayout></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li></ul>

注意点

  1. 不能通过 android:background 属性来改变 FloatingActionButton的背景颜色,只能通过app:backgroundTint属性改变,因为FloatingActionButton是继承自ImageView的。

TextInputLayout

该控件是用于EditView输入框的,主要解决之前EditView在获得焦点编辑时hint属性提示语消失,这一点在一个页

面有多个EditView输入框的时候不是很好,因为很有可能用户在输入多个EditView之后,不知道当前EditView需

要输入什么内容。为了解决这一问题,TextInputLayout就此诞生了。TextInputLayout是继承自LinearLayout容

器布局,因此我们需要将EditView包含在TextInputLayout之内才可以使用,言外之意:TextInputLayout不能单

独使用。废话不多说,先上效果图啊:

这里写图片描述

XML布局代码如下:

<code class="hljs avrasm has-numbering"> <android<span class="hljs-preprocessor">.support</span><span class="hljs-preprocessor">.design</span><span class="hljs-preprocessor">.widget</span><span class="hljs-preprocessor">.TextInputLayout</span>        android:id=<span class="hljs-string">"@+id/textInput"</span>        android:layout_width=<span class="hljs-string">"match_parent"</span>        android:layout_height=<span class="hljs-string">"wrap_content"</span>>        <EditText            android:layout_width=<span class="hljs-string">"match_parent"</span>            android:layout_height=<span class="hljs-string">"wrap_content"</span>            android:textColor=<span class="hljs-string">"@android:color/black"</span>/>    </android<span class="hljs-preprocessor">.support</span><span class="hljs-preprocessor">.design</span><span class="hljs-preprocessor">.widget</span><span class="hljs-preprocessor">.TextInputLayout</span>></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>

代码也可以看出TextInputLayout包裹着EditView。

为了达到以上效果,我们还需添加如下代码:

<code class="hljs java has-numbering"><span class="hljs-keyword">final</span> TextInputLayout  inputLayout = findView(R.id.textInput);        inputLayout.setHint(<span class="hljs-string">"请输入姓名:"</span>);        EditText editText = inputLayout.getEditText();        editText.addTextChangedListener(<span class="hljs-keyword">new</span> TextWatcher() {            <span class="hljs-annotation">@Override</span>            <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">beforeTextChanged</span>(CharSequence s, <span class="hljs-keyword">int</span> start, <span class="hljs-keyword">int</span> count, <span class="hljs-keyword">int</span> after) {            }            <span class="hljs-annotation">@Override</span>            <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onTextChanged</span>(CharSequence s, <span class="hljs-keyword">int</span> start, <span class="hljs-keyword">int</span> before, <span class="hljs-keyword">int</span> count) {                <span class="hljs-keyword">if</span> (s.length()><span class="hljs-number">4</span>){                    inputLayout.setErrorEnabled(<span class="hljs-keyword">true</span>);                    inputLayout.setError(<span class="hljs-string">"姓名长度不能超过4个"</span>);                }<span class="hljs-keyword">else</span>{                    inputLayout.setErrorEnabled(<span class="hljs-keyword">false</span>);                }            }            <span class="hljs-annotation">@Override</span>            <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">afterTextChanged</span>(Editable s) {            }        });</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li></ul>

TextInputLayout 不仅能让EditView的提示语上弹显示在EditView之上,而且还能把错误信息显示在EditView之下。

TextInputLayout常用的方法有如下:

  1. setHint():设置提示语。
  2. getEditText():得到TextInputLayout中的EditView控件。
  3. setErrorEnabled():设置是否可以显示错误信息。
  4. setError():设置当用户输入错误时弹出的错误信息。

注意点

  1. TextInputLayout不能单独使用,需要包裹EditView组件。

【转载请注明出处:http://blog.csdn.net/feiduclear_up/article/details/46500865 CSDN 废墟的树】

Snackbar的使用

Snackbar提供了一个介于Toast和AlertDialog之间轻量级控件,它可以很方便的提供消息的提示和动作反馈。

废话不少说,妹子,上图:
这里写图片描述

Snackbar的使用和Toast很类似,调用代码如下:

<code class="hljs java has-numbering"><span class="hljs-keyword">final</span> Snackbar snackbar = Snackbar.make(inputLayout,<span class="hljs-string">"测试弹出提示"</span>,Snackbar.LENGTH_LONG);                snackbar.show();                snackbar.setAction(<span class="hljs-string">"取消"</span>,<span class="hljs-keyword">new</span> View.OnClickListener() {                    <span class="hljs-annotation">@Override</span>                    <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onClick</span>(View v) {                        snackbar.dismiss();                    }                });</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>

第一个参数View 可以是当前父布局中的任何一个view对象都可以。之后的参数和Toast参数一样。Snackbar可以

设置Action行为事件,使用的方法是public Snackbar setAction (CharSequence text, View.OnClickListener listener); Action的字体颜色默认使用系统主题中的如下颜色

<code class="hljs applescript has-numbering"><<span class="hljs-property">item</span> <span class="hljs-property">name</span>=<span class="hljs-string">"colorAccent"</span>><span class="hljs-comment">#ff0000</item></span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

当然你可以通过代码去改变Action的字体颜色:Snackbar setActionTextColor (int color);

注意

  1. Snackbar是从整个界面的底部弹出。

TabLayout

Tabs选项卡,效果类似网易新闻客户端的Tab。其实实现Tabs选项卡的效果有很多中方法,Github上也有很多好

用的开源控件,只是这次谷歌把它官方化了,使得开发者无需引用第三方库,就能方便的使用。效果图:

这里写图片描述

XML布局如下:

<code class="hljs handlebars has-numbering"><span class="xml"> <span class="hljs-tag"><<span class="hljs-title">android.support.design.widget.TabLayout</span>        <span class="hljs-attribute">android:id</span>=<span class="hljs-value">"@+id/tabs"</span>    <!<span class="hljs-attribute">--Tab</span>被选中字体的颜色<span class="hljs-attribute">--</span>></span>        app:tabSelectedTextColor="@android:color/holo_blue_bright"    <span class="hljs-comment"><!--Tab未被选中字体的颜色--></span>        app:tabTextColor="@android:color/black"    <span class="hljs-comment"><!--Tab指示器下标的颜色--></span>        app:tabIndicatorColor="@android:color/holo_blue_bright"        android:layout_width="match_parent"        android:layout_height="wrap_content" /></span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>

常用的属性有三个:

  1. app:tabSelectedTextColor:Tab被选中字体的颜色
  2. app:tabTextColor:Tab未被选中字体的颜色
  3. app:tabIndicatorColor:Tab指示器下标的颜色

TabLayout常用的方法如下:
- addTab(TabLayout.Tab tab, int position, boolean setSelected) 增加选项卡到 layout 中
- addTab(TabLayout.Tab tab, boolean setSelected) 同上
- addTab(TabLayout.Tab tab) 同上
- getTabAt(int index) 得到选项卡
- getTabCount() 得到选项卡的总个数
- getTabGravity() 得到 tab 的 Gravity
- getTabMode() 得到 tab 的模式
- getTabTextColors() 得到 tab 中文本的颜色
- newTab() 新建个 tab
- removeAllTabs() 移除所有的 tab
- removeTab(TabLayout.Tab tab) 移除指定的 tab
- removeTabAt(int position) 移除指定位置的 tab
- setOnTabSelectedListener(TabLayout.OnTabSelectedListener onTabSelectedListener) 为每个 tab 增加选择监听器
- setScrollPosition(int position, float positionOffset, boolean updateSelectedText) 设置滚动位置
- setTabGravity(int gravity) 设置 Gravity
- setTabMode(int mode) 设置 Mode,有两种值:TabLayout.MODE_SCROLLABLE和TabLayout.MODE_FIXED分别表示当tab的内容超过屏幕宽度是否支持横向水平滑动,第一种支持滑动,第二种不支持,默认不支持水平滑动。
- setTabTextColors(ColorStateList textColor) 设置 tab 中文本的颜色
- setTabTextColors(int normalColor, int selectedColor) 设置 tab 中文本的颜色 默认 选中
- setTabsFromPagerAdapter(PagerAdapter adapter) 设置 PagerAdapter
- setupWithViewPager(ViewPager viewPager) 和 ViewPager 联动

一般TabLayout都是和ViewPager共同使用才发挥它的优势,现在我们通过代码来看看以上方法的使用。

<code class="hljs avrasm has-numbering">viewPager = findView(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.viewPager</span>)<span class="hljs-comment">;</span>        tabLayout = findView(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.tabs</span>)<span class="hljs-comment">;</span>        List<String> tabList = new ArrayList<>()<span class="hljs-comment">;</span>        tabList<span class="hljs-preprocessor">.add</span>(<span class="hljs-string">"Tab1"</span>)<span class="hljs-comment">;</span>        tabList<span class="hljs-preprocessor">.add</span>(<span class="hljs-string">"Tab2"</span>)<span class="hljs-comment">;</span>        tabList<span class="hljs-preprocessor">.add</span>(<span class="hljs-string">"Tab3"</span>)<span class="hljs-comment">;</span>        tabLayout<span class="hljs-preprocessor">.setTabMode</span>(TabLayout<span class="hljs-preprocessor">.MODE</span>_FIXED)<span class="hljs-comment">;//设置tab模式,当前为系统默认模式</span>        tabLayout<span class="hljs-preprocessor">.addTab</span>(tabLayout<span class="hljs-preprocessor">.newTab</span>()<span class="hljs-preprocessor">.setText</span>(tabList<span class="hljs-preprocessor">.get</span>(<span class="hljs-number">0</span>)))<span class="hljs-comment">;//添加tab选项卡</span>        tabLayout<span class="hljs-preprocessor">.addTab</span>(tabLayout<span class="hljs-preprocessor">.newTab</span>()<span class="hljs-preprocessor">.setText</span>(tabList<span class="hljs-preprocessor">.get</span>(<span class="hljs-number">1</span>)))<span class="hljs-comment">;</span>        tabLayout<span class="hljs-preprocessor">.addTab</span>(tabLayout<span class="hljs-preprocessor">.newTab</span>()<span class="hljs-preprocessor">.setText</span>(tabList<span class="hljs-preprocessor">.get</span>(<span class="hljs-number">2</span>)))<span class="hljs-comment">;</span>        List<Fragment> fragmentList = new ArrayList<>()<span class="hljs-comment">;</span>        for (int i = <span class="hljs-number">0</span><span class="hljs-comment">; i < tabList.size(); i++) {</span>            Fragment f1 = new TabFragment()<span class="hljs-comment">;</span>            Bundle bundle = new Bundle()<span class="hljs-comment">;</span>            bundle<span class="hljs-preprocessor">.putString</span>(<span class="hljs-string">"content"</span>, <span class="hljs-string">"http://blog.csdn.net/feiduclear_up \n CSDN 废墟的树"</span>)<span class="hljs-comment">;</span>            f1<span class="hljs-preprocessor">.setArguments</span>(bundle)<span class="hljs-comment">;</span>            fragmentList<span class="hljs-preprocessor">.add</span>(f1)<span class="hljs-comment">;</span>        }        TabFragmentAdapter fragmentAdapter = new TabFragmentAdapter(getSupportFragmentManager(), fragmentList, tabList)<span class="hljs-comment">;</span>        viewPager<span class="hljs-preprocessor">.setAdapter</span>(fragmentAdapter)<span class="hljs-comment">;//给ViewPager设置适配器</span>        tabLayout<span class="hljs-preprocessor">.setupWithViewPager</span>(viewPager)<span class="hljs-comment">;//将TabLayout和ViewPager关联起来。</span>        tabLayout<span class="hljs-preprocessor">.setTabsFromPagerAdapter</span>(fragmentAdapter)<span class="hljs-comment">;//给Tabs设置适配器</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul>

就不解释了,都有注释,来看看以上代码的TabFragmentAdapter和TabFragment实现如下:

TabFragmentAdapter

<code class="hljs java has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TabFragmentAdapter</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">FragmentStatePagerAdapter</span> {</span>    <span class="hljs-keyword">private</span> List<Fragment> mFragments;    <span class="hljs-keyword">private</span> List<String> mTitles;    <span class="hljs-keyword">public</span> <span class="hljs-title">TabFragmentAdapter</span>(FragmentManager fm, List<Fragment> fragments, List<String> titles) {        <span class="hljs-keyword">super</span>(fm);        mFragments = fragments;        mTitles = titles;    }    <span class="hljs-annotation">@Override</span>    <span class="hljs-keyword">public</span> Fragment <span class="hljs-title">getItem</span>(<span class="hljs-keyword">int</span> position) {        <span class="hljs-keyword">return</span> mFragments.get(position);    }    <span class="hljs-annotation">@Override</span>    <span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">getCount</span>() {        <span class="hljs-keyword">return</span> mFragments.size();    }    <span class="hljs-annotation">@Override</span>    <span class="hljs-keyword">public</span> CharSequence <span class="hljs-title">getPageTitle</span>(<span class="hljs-keyword">int</span> position) {        <span class="hljs-keyword">return</span> mTitles.get(position);    }}</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul>

TabFragment

<code class="hljs java has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TabFragment</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Fragment</span> {</span>    <span class="hljs-keyword">private</span> String content;    <span class="hljs-keyword">private</span> View view;    <span class="hljs-annotation">@Override</span>    <span class="hljs-keyword">public</span> View <span class="hljs-title">onCreateView</span>(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.item, container,<span class="hljs-keyword">false</span>);        <span class="hljs-keyword">return</span> view;    }    <span class="hljs-annotation">@Override</span>    <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onActivityCreated</span>(@Nullable Bundle savedInstanceState) {        <span class="hljs-keyword">super</span>.onActivityCreated(savedInstanceState);        content = getArguments().getString(<span class="hljs-string">"content"</span>);        TextView tvContent = (TextView) view.findViewById(R.id.tv_tab_content);        tvContent.setText(content + <span class="hljs-string">""</span>);    }}</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li></ul>

注意 :有这么一种情况,当Tabs中的内容超过了手机屏幕的宽度时,Tabs选项卡中的tab为什么不支持水平滑动?其实TabLayout是支持水平滑动的,只需要你在代码中添加如下一行即可:

<code class="hljs avrasm has-numbering">tabLayout<span class="hljs-preprocessor">.setTabMode</span>(TabLayout<span class="hljs-preprocessor">.MODE</span>_SCROLLABLE)<span class="hljs-comment">;//设置tab模式</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

限于篇幅有点长,接下来的CoordinatorLayout , CollapsingToolbarLayout 和 AppBarLayout,NavigationView将

在下一篇博客学习。以上代码,如有疑问,欢迎共同讨论。

源码地址 https://github.com/xujinping/AndroidDesignLibrary/tree/master

0 0
原创粉丝点击