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

时间:2019-04-11 13:17:05

标签: java android android-tablayout android-icons

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

我尝试了很多事情;尝试增加图标的大小,尝试了tabItems的layout_ widthlayout_height。但这一切都不起作用。

如何增加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>

3 个答案:

答案 0 :(得分:2)

如果您希望为不同的屏幕尺寸使用不同的图标尺寸,则可能需要以下任何一种操作:

1-用自己合适的尺寸制作不同的图像,并放入相应的文件夹中,因为android具有每种dpi密度的可绘制文件夹,请查看:Android Studio: Drawable Folder: How to put Images for Multiple 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?

如果这些方法都不起作用,请提供官方的详细指南: https://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

答案 1 :(得分:0)

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

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

类似于supporting different screen sizesalternatice app resources中定义的

另一种方法是为标签创建自定义视图。

您可以为平板电脑的“自定义”标签创建布局。

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

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

答案 2 :(得分:0)

您可以使用

来增加图标的大小
memset(

像your_custom_view.xml这样创建一个新的布局资源,

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