ViewPagerIndicator 之TabPageIndicator的简单使用(顺带导库方法)
来源:互联网 发布:网络管理协议snmp组成 编辑:程序博客网 时间:2024/06/05 18:23
先蛋疼的描述一下AS导入这个库的艰辛历程吧?搜索了网上各种帖子,花了接近一天的时间,终于找到了一个合适的导入方法吧!~~
1.把库压缩文件下载解压后,把其中的library文件夹复制到随便一个盘,重命名为ViewPagerIndicator
2.然后右击项目–>Module–>Import Eclipse ADT Project–>选择盘里ViewPagerIndicator,一路next到底
3.next到底会发现报错提示:原因是SDK版本不一致。修改即可
4.修改:切换到Project视图:把ViewPagerIndicator中src目录下的build.gradle中的版本号改成和项目中的版本号一致
此外,下面的这句也需要修改: compile ‘com.android.support:support-v4:18.+’
例如你当前的Sdk版本是21,就修改成compile ‘com.android.support:support-v4:21.+’
例如我的,修改完了以后就是这样
然后 Try Again
最后一步应该都懂
搞定~~ 接下来就疯狂的撸吧!
MainActivity代码:
package com.example.lenovo.viewpagerindicator;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.os.Bundle;import android.view.View;import android.view.Window;import com.viewpagerindicator.TabPageIndicator;public class MainActivity extends FragmentActivity { private String[] title = {"房产","头条","体育","新闻","经济","财经","军事"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initView(); } private void initView() { ViewPager viewpager = (ViewPager) findViewById(R.id.viewpager); TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator); TabAdapter adapter = new TabAdapter(getSupportFragmentManager()); viewpager.setAdapter(adapter); indicator.setViewPager(viewpager); //这里是为了清楚TabPageIndicator时报的ViewPager has not been bound异常,先给TabPageIndicator设置android:visibility="gone" indicator.setVisibility(View.VISIBLE); } /** * 适配器代码 */ class TabAdapter extends FragmentPagerAdapter { public TabAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment = new TabFragment(); Bundle args = new Bundle(); args.putString("args",title[position]); fragment.setArguments(args); return fragment; } @Override public int getCount() { return title.length; } @Override public CharSequence getPageTitle(int position) { return title[position]; } }}
main_xml代码:
<?xml version="1.0" encoding="utf-8"?><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" tools:context="com.example.lenovo.viewpagerindicator.MainActivity"> <com.viewpagerindicator.TabPageIndicator android:id="@+id/indicator" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone"> </com.viewpagerindicator.TabPageIndicator> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.v4.view.ViewPager></LinearLayout>
Fragment代码:
package com.example.lenovo.viewpagerindicator;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;/** * Created by lenovo on 2016/6/14. */public class TabFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.tab,null); TextView textView = (TextView) view.findViewById(R.id.textview); Bundle args = getArguments(); String title = args.getString("args"); textView.setText(title); return view; }}
tab_xml代码(很简单,一个父布局居中的TextView):
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="hello" android:textSize="20sp"/></RelativeLayout>
注意:前方高能!!!到此为止,基本上大功告成了,只需要一个indicator的样式就OK了,在values/styles.xml中添加一个样式即可,代码如下
<style parent="Theme.AppCompat.Light.DarkActionBar" name="MyIndicatorColor"> <item name="vpiTabPageIndicatorStyle">@style/MyWidget.TabPageIndicator</item> <item name="android:windowNoTitle">true</item> <item name="android:animationDuration">5000</item> <item name="android:windowContentOverlay">@null</item> </style> <style parent="Widget" name="MyWidget.TabPageIndicator"> <item name="android:gravity">center</item> <item name="android:background">@drawable/vpi__tab_indicator</item> <item name="android:paddingLeft">22dip</item> <item name="android:paddingRight">22dip</item> <item name="android:paddingTop">8dp</item> <item name="android:paddingBottom">8dp</item> <item name="android:textAppearance">@style/MyTextAppearance.TabPageIndicator</item> <item name="android:textSize">16sp</item> <item name="android:maxLines">1</item> </style> <style parent="Widget" name="MyTextAppearance.TabPageIndicator"> <!-- 设置文本字体加粗 --> <item name="android:textStyle">bold</item> <!-- 设置文本字体颜色选择器 --> <item name="android:textColor">@drawable/textcolor</item> </style>
此外,我设置了一个字体选中时的颜色选择器,代码如下:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#969696" android:state_selected="false" android:state_pressed="false" android:state_focused="false"/> <item android:color="#ff0000" android:state_selected="true" android:state_pressed="false" android:state_focused="false"/> <!-- Focused states --> <item android:color="#969696" android:state_selected="false" android:state_pressed="false" android:state_focused="true"/> <item android:color="#ff0000" android:state_selected="true" android:state_pressed="false" android:state_focused="true"/> <!-- Pressed --> <item android:color="#ff0000" android:state_pressed="true"/></selector>
最后一步:在清单文件中设置android:theme=”@style/MyIndicatorColor”
OK~~~,至此已经全部搞定~~
- ViewPagerIndicator 之TabPageIndicator的简单使用(顺带导库方法)
- TabPageIndicator的简单使用
- Android-ViewPagerIndicator使用:--TabPageIndicator浅析
- Android-ViewPagerIndicator框架使用——TabPageIndicator(二)
- Android-ViewPagerIndicator框架使用——TabPageIndicator
- Android-ViewPagerIndicator框架使用——TabPageIndicator
- ViewPagerIndicator--使用TabPageIndicator实现指针控件
- ViewPagerIndicator中 TabPageIndicator的遇到的问题
- ViewPagerIndicator库的使用
- Fragment嵌套带来的坑--页面点击无反应(顺带ViewPager之 FragmentPagerAdapter简单分析)
- ViewPagerIndicator的简单实用
- android viewpager和tabpageIndicator简单使用
- (备忘录)ViewPagerIndicator的使用(1)
- ViewPagerIndicator框架的使用(第二部分)
- ViewPagerIndicator的使用
- viewpager+viewpagerindicator的使用
- ViewPagerIndicator的使用
- ViewpagerIndicator 的使用
- Swift学习之七:Optional value(可选值)
- 输出数组全排列
- 搭建Axis的WebService
- 软件工程系列- 软件开发的可行性研究
- Swift学习之八:断言(Assertions)
- ViewPagerIndicator 之TabPageIndicator的简单使用(顺带导库方法)
- Java Collection
- Swift学习之九:基本运行符(Basic Operators)
- Android常用开源工具(2)-Dagger2进阶
- 网红“有毒”,被“感染”的短视频、直播平台真能赢得下半场?
- Swift学习之十:字符串与字符(Strings and Characters)
- Java基础知识:java.util.Map集合
- Codeforces Round #357 (Div. 2)-C. Heap Operations
- byte数组和图片转换