Android原件(actionbar、viewpager):取消ActionBar、ViewPager的應用
今日實做的影片效果:
前言
基本上我是看這篇學的,如果有興趣可以參考一下原文:
原作者沒有附上檔案,我有附上github連結,如果有不懂可以下載下來看看。
重要程式碼:
Layout布局 >>> PagerTabStrip是ViewPager下面那條橫槓
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v4.view.PagerTabStrip
android:id="@+id/pagertab"
android:layout_width="wrap_content"
android:layout_height="50dp"
></android.support.v4.view.PagerTabStrip>
</android.support.v4.view.ViewPager>
LayoutInflater填入layout,並且裝入陣列。(載入要顯示的View(Layout))
//設定inflater,並把view(layout)裝入inflater
LayoutInflater
lf = getLayoutInflater().from(this);
view1 =
lf.inflate(R.layout.layout1, null);
view2 =
lf.inflate(R.layout.layout2, null);
view3 =
lf.inflate(R.layout.layout3, null);
//將要顯示的view裝入陣列
viewList = new
ArrayList<View>();
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
這是ViewPager的Adapter,在Activity直接設置它的Adapter,使用到Viewpager都需要重寫PagerAdapter。
//設定inflater,並把view(layout)裝入inflater
LayoutInflater
lf = getLayoutInflater().from(this);
view1 =
lf.inflate(R.layout.layout1, null);
view2 =
lf.inflate(R.layout.layout2, null);
view3 =
lf.inflate(R.layout.layout3, null);
//將要顯示的view裝入陣列
viewList = new ArrayList<View>();
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
完整實作:
重點是MainActivity。Layout1~3只要分的出三個的差異就行了。
Activity.java。
import android.content.Intent;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import
android.support.v4.view.PagerAdapter;
import
android.support.v4.view.PagerTabStrip;
import
android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import
android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends
AppCompatActivity {
private View view1,
view2, view3;//滑動的頁面
private ViewPager viewPager;//viewpager
private PagerTitleStrip
pagerTitleStrip;//viewpager的標題
private PagerTabStrip
pagerTabStrip;//一個viewpager的指示器,效果就是一個橫的粗下滑線
private
List<View> viewList;
private
List<String> titleList;
private Button
webio_button;
private Intent intent;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
//取消ActionBar
getSupportActionBar().hide();
}
private void init() {
viewPager = (ViewPager) findViewById(R.id.viewpager);
pagerTabStrip = (PagerTabStrip) findViewById(R.id.pagertab);
//橫粗下滑線 顏色
pagerTabStrip.setTabIndicatorColor(getResources().getColor(R.color.colorPrimary));
//?
pagerTabStrip.setDrawFullUnderline(false);
//背景顏色
pagerTabStrip.setBackgroundColor(getResources().getColor(R.color.colorAccent));
pagerTabStrip.setTextSpacing(100);
/*精華處*/
//設定inflater,並把view(layout)裝入inflater
LayoutInflater lf = getLayoutInflater().from(this);
view1 = lf.inflate(R.layout.layout1, null);
view2 = lf.inflate(R.layout.layout2, null);
view3 = lf.inflate(R.layout.layout3, null);
//將要顯示的view裝入陣列
viewList = new ArrayList<View>();
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
//每個介面的Title數據
titleList = new ArrayList<String>();
titleList.add("page One");
titleList.add("page Two");
titleList.add("page Three");
/*精華處*/
//viewpager的 adapter轉接器 /*Important
things 精華*/
PagerAdapter pagerAdapter = new PagerAdapter() {
@Override//要使用pagerAdapter必須要有的
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override//ViewList數量
public int getCount() {
return viewList.size();
}
@Override//消滅View
public void destroyItem(ViewGroup container, int position,
Object
object) {
container.removeView(viewList.get(position));
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override //Titlelist塞入
public CharSequence getPageTitle(int position) {
return titleList.get(position);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
}
};
viewPager.setAdapter(pagerAdapter);
}
}
Activity布局。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context="com.example.nikeru8.app_viewpage.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v4.view.PagerTabStrip
android:id="@+id/pagertab"
android:layout_width="wrap_content"
android:layout_height="50dp"
></android.support.v4.view.PagerTabStrip>
</android.support.v4.view.ViewPager>
</RelativeLayout>
另外三個Layout我是使用Fragment,在這就不贅述了。
完成囉!
在結尾順便強調一下取消actionbar這件事,畢竟只有一行....太容易被忽略了!
getSupportActionBar().hide();
很重要的阿 各位!
很重要的阿 各位!
github:
https://github.com/nikeru8/app_viewpage
2016/12/21 微更
其實要消除ActionBar,只要把 extends AppCompatActivity
改成extends Activity ActionBar就會自動消失。
有人問我,那為什麼還要有 getSupportActionBar().hide(); 這個方法呢?
因為Activity和AppCompatActivity他們上面繼承的東西部一樣,有些方法沒辦法在Activity內呼叫。
沒有留言:
張貼留言