如何增加 tabItems 上图标的大小?

How can increase the size of icons on the tabItems?

我的项目在 tabLayout 上包含 6 个图标。它们都以编程方式放入 tabs,而不是 layout 中的 ImageView。现在,必须增加平板电脑屏幕的图标大小。

我尝试了很多东西;尝试增加图标大小,尝试 layout_ widthlayout_height tabItems。但这一切都没有用。

如何增加 tabLayout 上的图标大小?希望有人能帮助我。

Result_Activity.java

private Integer[] images;
Integer[] domesticImages = {
        R.drawable.ic_directions_bus_black_24dp,
        R.drawable.ic_flight_takeoff_black_24dp,
        R.drawable.ic_directions_boat_black_24dp,
        R.drawable.ic_train_black_24dp,
        R.drawable.ic_hotel,
        R.drawable.ic_rent_a_car
};
private Integer[] domesticImagesClicked = {
        R.drawable.ic_directions_bus_clicked_24dp,
        R.drawable.ic_flight_takeoff_clicked_24dp,
        R.drawable.ic_directions_boat_clicked_24dp,
        R.drawable.ic_train_clicked_24dp,
        R.drawable.ic_hotel_clicked,
        R.drawable.ic_rent_a_car_clicked
};

activity_result.xml

 <android.support.design.widget.TabLayout
            android:id="@+id/tabLayout"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_below="@+id/rl_Detail"
            android:background="#F4E6CA"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:tabBackground="?attr/selectableItemBackgroundBorderless"
            app:tabIndicatorColor="@android:color/transparent"
            app:tabPaddingEnd="15dp"
            app:tabPaddingStart="15dp">

            <android.support.design.widget.TabItem
                android:id="@+id/tab1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:saveEnabled="true" />

            <android.support.design.widget.TabItem
                android:layout_width="wrap_content"
                android:layout_height="match_parent" />

            <android.support.design.widget.TabItem
                android:layout_width="wrap_content"
                android:layout_height="match_parent" />

            <android.support.design.widget.TabItem
                android:layout_width="wrap_content"
                android:layout_height="match_parent" />

            <android.support.design.widget.TabItem
                android:layout_width="wrap_content"
                android:layout_height="match_parent" />

            <android.support.design.widget.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </android.support.design.widget.TabLayout>

您可以为平板电脑配置指定不同的资源集(可绘制文件夹)。

对于平板电脑,您需要另一个名为 drawable-sw600dp 的可绘制文件夹。

supporting different screen sizes and alternatice app resources

中定义

另一种方法 是为您的选项卡创建自定义视图。

您可以为平板电脑的自定义选项卡创建布局。

然后以编程方式扩充布局,并使用 tab.setCustomView(customView) 进行设置。

您只能在平板电脑上执行此操作。

如果您想要针对不同屏幕尺寸使用不同尺寸的图标,您可能需要执行以下任一操作:

1 - 用自己合适的尺寸制作不同的图像并放在各自的文件夹中,因为 android 每个 dpi 密度都有可绘制的文件夹,看一下:

2 - 如果图标很简单,您可以使用矢量图标,因为它们可以更改尺寸以适合您需要的任何屏幕尺寸。看看:https://developer.android.com/studio/write/vector-asset-studio

3 - 您可以检查设备是否为平板电脑并以编程方式更改图标大小,这取决于您添加图标的方式。您可以使用以下代码进行检查:

public static boolean isTablet(Context context) { return (context.getResources().getConfiguration().screenLayout & 0xF) >= 3; }

或者您可以在此处查看不同的实现方式:Determine if the device is a smartphone or tablet?

如果 none 这些方法有帮助,有官方详细指南: https://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

您可以使用

增加图标的大小
    for (int i = 0; i < tabLayout.getTabCount(); i++) {
        TabLayout.Tab tab = tabLayout.getTabAt(i);
        switch(i){
            case 0: if (tab != null){
                        tab.setIcon(R.drawable.your_icon_1)
                        .setText(R.string.your_text1);
                    }break;
            case 1: if (tab != null){
                        tab.setIcon(R.drawable.your_icon_2)
                        .setText(R.string.your_text2);
                    }break;
            case 2: if (tab != null){
                        tab.setIcon(R.drawable.your_icon_3)
                        .setText(R.string.your_text3);
                    }break;
            case 3: if (tab != null){
                        tab.setIcon(R.drawable.your_icon_4)
                        .setText(R.string.your_text4);
                    }break;
        }
        if (tab != null) tab.setCustomView(R.layout.your_custom_view);
    }

像这样 your_custom_view.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>