2015-12-12 35 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

您好我之前遇到过同样的问题,这是我最好的解决方案ULD发现:

您应该使用(setCustomView),首先作出新的布局文件 让命名(customtab.xml):

<?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> 

然后和每个标签做到这一点:(使用同样的布局的.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

如文档中所述,您可以创建具有ImageView新的布局android:id="@android:id/icon"并将其设置为选项卡的自定义视图。 TabLayout会自动将图标放入内部ImageView中,并在您创建选项卡的同时拨打setIcon(R.drawable.yourIcon)

然后你就可以在自定义布局应用您为循环:

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

这只是在values/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); 
    } 

快乐作弄

+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你想和中提琴! 它适用于所有地方

相关问题