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


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

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

回答の条件
  • 1人50回まで
  • 13歳以上
  • 登録:2014/04/24 20:49:57
  • 終了:2014/05/01 20:50:04

回答(1件)

id:sasada No.1

sasada回答回数1482ベストアンサー獲得回数1332014/04/25 11:19:33

スワイプを含むタブの実装についての例です。
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
 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
  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"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

 <TextView
  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;
}
-----------------------------------

  • id:sasada
    ソースコードを公開した方が回答がつきやすくなるかもしれませんね。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません