2015-12-12 19 views
12

私のアプリでタブのアイコンサイズを大きくしようとしています。アイコンサイズは多くの方法で試して固定されていますが、何も動作していません、最終的には次のように試みましたがサイズは変更されませんでした。もし私が喜んでいる正しい方法を教えてください。ここでTabLayoutでタブのアイコンサイズを大きくするには

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.my1)); 
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.feed_s)); 
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.add_ds1)); 
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.history_ds)); 
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

style.xml

<style name="AppTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar"> 
    <item name="android:layout_width">50dp</item> 
    <item name="android:layout_height">50dp</item> 
</style> 

tablayout.xml

答えて

39

、私のコードですこんにちは、私は前に同じ問題に直面し、これがあります私が協力している最高のソリューション

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:scaleType="fitCenter" 
     android:id="@+id/icon" 
     android:layout_gravity="center_horizontal" /> 
</LinearLayout> 

次に、各タブのは、次の操作を行います:新しいレイアウトファイル は、それが(customtab.xml)の名前をすることができます最初にすべてのが作る、(setCustomView)

あなたが使用する必要があります:ULDを見つける使用(同じレイアウトの.xml)

View view1 = getLayoutInflater().inflate(R.layout.customtab, null); 
view1.findViewById(R.id.icon).setBackgroundResource(R.drawable.my1); 
tabLayout.addTab(tabLayout.newTab().setCustomView(view1)); 


View view2 = getLayoutInflater().inflate(R.layout.customtab, null); 
view2.findViewById(R.id.icon).setBackgroundResource(R.drawable.my2); 
tabLayout.addTab(tabLayout.newTab().setCustomView(view2)); 


View view3 = getLayoutInflater().inflate(R.layout.customtab, null); 
view3.findViewById(R.id.icon).setBackgroundResource(R.drawable.my3); 
tabLayout.addTab(tabLayout.newTab().setCustomView(view3)); 

... 
+0

ありがとうございます。これは、最善の解決策:) – veena

+0

だったが、私はあなたが歓迎されている – veena

+0

各タブのアイコンのための別のビューを作成する必要があります、私はあなたの –

11

ドキュメントで述べたように、あなたはandroid:id="@android:id/icon"ImageViewで新しいレイアウトを作成して、タブのカスタムビューとして設定することができます。 TabLayoutは自動的に内側のImageViewにアイコンを配置しますandroid:id/icon

あなたのコードでは、タブを作成中にsetIcon(R.drawable.yourIcon)を呼び出すことができます。

次にあなたがforループ内のレイアウトカスタムあなたを適用することができますに:ここでは

mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.searchpin)); 
mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.discussionpin)); 
mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.userpin)); 

for (int i = 0; i < mTabLayout.getTabCount(); i++) { 
    TabLayout.Tab tab = mTabLayout.getTabAt(i); 
    if (tab != null) tab.setCustomView(R.layout.view_home_tab); 
} 

はXMLです:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@android:id/icon" 
     android:layout_width="@dimen/tab_icon_size" 
     android:layout_height="@dimen/tab_icon_size" 
     android:layout_centerInParent="true"/> 

</RelativeLayout> 
+3

私のために働いた。また、セレクタを使用して異なる状態を表す場合は、カスタムビューの最初の選択状態を設定する必要があります。 tab.getCustomView()。setSelected(tab.isSelected()); – lilienberg

+0

tab_icon_sizeとは何ですか? –

+0

これは、値/ dimens.xmlファイルで作成されたばかり[次元リソース(https://developer.android.com/samples/BasicSyncAdapter/res/values/dimen.html)です。 –

3

任意のXMLビューを取る必要はありません。 ImageViewのランタイムを作成し、私は、あなたはこれを試すことができ、完全なアプリケーションを意味し、すべての画面内で変更したい場合はビュー:)

for (int i = 0; i < tabLayout.getTabCount(); i++) { 
     ImageView imageView = new ImageView(context); 
     imageView.setImageResource(arr_drawable[i]); 
     tabLayout.getTabAt(i).setCustomView(imageView); 
    } 

ハッピーcodding

+0

画像の表示サイズを変更することはできますか? – podgradle

+0

はい、パラメータのランタイムを設定して変更できます –

1

として画像を追加します。 という名前のレイアウトフォルダ内のファイルを作成します。をdesign_layout_tab_icon.xml とコード

<?xml version="1.0" encoding="utf-8"?> 
<ImageView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@android:id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal" 
     android:scaleType="fitCenter" 
     tools:src="@mipmap/ic_launcher"/> 

ペーストidはそれを残して変更し、タブバーがいくつかの高さyの設定されている画面上ではいけません欲しいとビオラ! すべての地域に適用されます