質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

0回答

1957閲覧

TabHostについて

TakamasaAwai

総合スコア73

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2015/07/11 11:54

編集2015/07/13 01:35

下のコードで、上の写真のようなタブを作りたいのですが、下のようになってしまいます。どうしてでしょうか?

// スクロール中はonPageScrolled()で描画するのでここではしない
![![イメージ説明]WIDTH:320

lang

1public class MainActivity extends FragmentActivity { 2 ViewPager viewPager; 3 TabHost tabHost; 4 View indicator; 5 TabWidget tabWidget; 6 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_main); 11 //マテリアルデザインの作業 12 tabWidget = (TabWidget) findViewById(android.R.id.tabs); 13 tabWidget.setStripEnabled(false); 14 tabWidget.setShowDividers(LinearLayout.SHOW_DIVIDER_NONE); 15 indicator = findViewById(R.id.indicator); 16 17 tabHost = (TabHost) findViewById(android.R.id.tabhost); 18 tabHost.setup(); 19 20 getActionBar().setElevation(0); //TabとActionBarとの間の影を消す 21 22 float elevation = 4 * getResources().getDisplayMetrics().density; 23 tabHost.setElevation(elevation); 24 25 //PagerとTabの設定 26 ViewPagerAdapter vpa = new ViewPagerAdapter(getSupportFragmentManager()); 27 viewPager = (ViewPager) findViewById(R.id.pager); 28 viewPager.setAdapter(vpa); 29 viewPager.setOnPageChangeListener(new PageChangeListener()); 30 31 for (int i = 0; i < vpa.getCount(); i++) { 32 tabHost.addTab(tabHost 33 .newTabSpec(String.valueOf(i)) 34 .setIndicator(vpa.getPageTitle(i)) 35 .setContent(android.R.id.tabcontent)); 36 } 37 38 LayoutInflater inflater = LayoutInflater.from(this); 39 for (int i = 0; i < vpa.getCount(); i++) { 40 TextView tv = (TextView) inflater.inflate(R.layout.tab_widget, tabWidget, false); 41 tv.setText(vpa.getPageTitle(i)); 42 43 tabHost.addTab(tabHost 44 .newTabSpec(String.valueOf(i)) 45 .setIndicator(tv) 46 .setContent(android.R.id.tabcontent)); 47 } 48 49 50 tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { 51 @Override 52 public void onTabChanged(String tabId) { 53 viewPager.setCurrentItem(Integer.valueOf(tabId)); 54 } 55 }); 56 57 viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 58 @Override 59 public void onPageSelected(int position) { 60 super.onPageSelected(position); 61 tabHost.setCurrentTab(position); 62 } 63 }); 64 } 65 66 private class PageChangeListener implements ViewPager.OnPageChangeListener { 67 private int scrollingState = ViewPager.SCROLL_STATE_IDLE; 68 69 @Override 70 public void onPageSelected(int position) { 71 72 // スクロール中はonPageScrolled()で描画するのでここではしない 73 74 if (scrollingState == ViewPager.SCROLL_STATE_IDLE) { 75 updateIndicatorPosition(position, 0); 76 } 77 tabWidget.setCurrentTab(position); 78 } 79 80 @Override 81 public void onPageScrollStateChanged(int state) { 82 scrollingState = state; 83 } 84 85 @Override 86 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 87 updateIndicatorPosition(position, positionOffset); 88 } 89 90 private void updateIndicatorPosition(int position, float positionOffset) { 91 View tabView = tabWidget.getChildTabViewAt(position); 92 int indicatorWidth = tabView.getWidth(); 93 int indicatorLeft = (int) ((position + positionOffset) * indicatorWidth); 94 95 final FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) indicator.getLayoutParams(); 96 layoutParams.width = indicatorWidth; 97 layoutParams.setMargins(indicatorLeft, 0, 0, 0); 98 indicator.setLayoutParams(layoutParams); 99 } 100 } 101}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RitsukiGoto

2015/07/11 12:16

画像が見れないようです。 確認お願いします〜!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問