如何增加 tabItems 上图标的大小?
How can increase the size of icons on the tabItems?
我的项目在 tabLayout
上包含 6 个图标。它们都以编程方式放入 tabs
,而不是 layout
中的 ImageView
。现在,必须增加平板电脑屏幕的图标大小。
我尝试了很多东西;尝试增加图标大小,尝试 layout_ width
和 layout_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>
我的项目在 tabLayout
上包含 6 个图标。它们都以编程方式放入 tabs
,而不是 layout
中的 ImageView
。现在,必须增加平板电脑屏幕的图标大小。
我尝试了很多东西;尝试增加图标大小,尝试 layout_ width
和 layout_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>