Как увеличить размер значков вкладок в 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
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_below="@+id/toolbar"
android:background="?attr/colorPrimary"
android:elevation="6dp"
android:theme="@style/AppTheme.ActionBar"/>
Ответы
Ответ 1
Привет, я столкнулся с той же проблемой, и это лучшее решение, которое я смог найти:
Вы должны использовать (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));
...
Ответ 2
Как указано в документации, вы можете создать новый макет с ImageView
с помощью android:id="@android:id/icon"
и установить его как пользовательское представление для вкладки. 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
Не нужно принимать какой-либо вид xml. Создайте среду просмотра изображений и добавьте изображение в качестве вида:)
for (int i = 0; i < tabLayout.getTabCount(); i++) {
ImageView imageView = new ImageView(context);
imageView.setImageResource(arr_drawable[i]);
tabLayout.getTabAt(i).setCustomView(imageView);
}
Счастливая ходьба
Ответ 4
Если вы хотите изменить внутри всех экранов, я имею в виду полное приложение, вы можете попробовать следующее:
Создайте файл внутри папки макета с именем: 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"/>
Не меняйте идентификатор и оставляйте его на экране, где на панели вкладок установлена некоторая высота, которую вы хотите, и альта!!!
Он будет применяться ко всем местам