LINE NEWSのようなタブの実装方法を教えてください。


Androidアプリ開発について質問です。
スマホアプリLINE NEWSのようなタブ機能を実現したいのですが、幾つかつまずく点がございまして困っております。
・タブ部分が独立して動作する(タブスワイプ時)
・ページの両端までいったときページがループする
・現在表示しているページのタイトル(タブ)を枠で囲む

上記について参考になるサイトや、実装方法をご存知の方がいらっしゃいましたらご教授お願いします。

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2014/05/01 20:50:04

回答1件)

id:sasada No.1

回答回数1482ベストアンサー獲得回数133

スワイプを含むタブの実装についての例です。
http://furudate.hatenablog.com/entry/2013/06/10/232244
ご参考になれば良いのですが。

id:yunbo777

ご回答ありがとうございます。
早速試してみます。

2014/04/25 12:00:25
id:yunbo777

sasada様コメントありがとうございます。

sasada様よりご指摘を頂きましたので、現在作成中のソースコードを公開させていただきます。

不慣れなものでもし見にくかったらすみません・・・

現在、PagerTitleStripを用いて実装を試みているのですが、他に何か有用なライブラリなどもございましたら教えていただけるとありがたいです。


【activity_main.xml】

-----------------------------------

<android.support.v4.view.ViewPager</p>

 xmlns:android="http://schemas.android.com/apk/res/android"

 android:id="@+id/pager"

 android:layout_width="match_parent"

 android:layout_height="match_parent" >

 <android.support.v4.view.PagerTitleStrip</p>

  android:id="@+id/strip"

  android:layout_width="match_parent"

  android:layout_height="wrap_content"

  android:background="#ffffff"

  android:paddingBottom="15dp"

  android:paddingTop="15dp" />

</android.support.v4.view.ViewPager>

-----------------------------------

【fragment_main.xml】

-----------------------------------

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"</p>

 android:layout_width="match_parent"

 android:layout_height="match_parent" >

 <TextView</p>

  android:id="@+id/text"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:textSize="20sp"

  android:textStyle="bold"

  android:layout_centerInParent="true" />

</RelativeLayout>

-----------------------------------

【MainActivity.java】

-----------------------------------

package com.example.tabdemo;

import android.support.v4.app.FragmentActivity;

import android.support.v4.view.PagerTitleStrip;

import android.support.v4.view.ViewPager;

import android.os.Bundle;

import android.util.TypedValue;

public class MainActivity extends FragmentActivity {

 @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  ViewPager pager = (ViewPager) findViewById(R.id.pager);

  PagerTitleStrip strip = (PagerTitleStrip) findViewById(R.id.strip);

  strip.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);

  strip.setTextSpacing(50);

  strip.setNonPrimaryAlpha(0.3f);

  CustomFragmentPagerAdapter adapter = new CustomFragmentPagerAdapter(getSupportFragmentManager());

  PageItem pageItem1 = new PageItem();

  pageItem1.text = "AAA";

  adapter.addItem(pageItem1);

  PageItem pageItem2 = new PageItem();

  pageItem2.text = "BBB";

  adapter.addItem(pageItem2);

  PageItem pageItem3 = new PageItem();

  pageItem3.text = "CCC";

  adapter.addItem(pageItem3);

  pager.setAdapter(adapter);

 }

}

-----------------------------------

【CustomFragmentPagerAdapter.java】

-----------------------------------

package com.example.tabdemo;

import java.util.ArrayList;

import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentPagerAdapter;

public class CustomFragmentPagerAdapter extends FragmentPagerAdapter {

 private ArrayList<PageItem> mList;

 public CustomFragmentPagerAdapter(FragmentManager fm) {

  super(fm);

  mList = new ArrayList<PageItem>();

 }

 @Override

 public Fragment getItem(int position) {

  PageItem item = mList.get(position);

  MainFragment mainFragment = new MainFragment();

  Bundle bundle = new Bundle();

  bundle.putString("text", item.text);

  mainFragment.setArguments(bundle);

  return mainFragment;

 }

 @Override

 public CharSequence getPageTitle(int position) {

  return mList.get(position).text;

 }

 @Override

 public int getCount() {

  return mList.size();

 }

 public void addItem(PageItem item) {

  mList.add(item);

 }

}

-----------------------------------

【MainFragment.java】

-----------------------------------

package com.example.tabdemo;

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;

public class MainFragment extends Fragment {

 @Override

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

  View view = inflater.inflate(R.layout.fragment_main, container, false);

  String text = (String) getArguments().getString("text");

  TextView textView = (TextView) view.findViewById(R.id.text);

  textView.setText(text);

  return view;

 }

}

-----------------------------------

【PageItem.java】

-----------------------------------

package com.example.tabdemo;

public class PageItem {

 public String text;

}

-----------------------------------

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません