Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何增加TabLayout中选项卡的图标大小_Android - Fatal编程技术网

Android 如何增加TabLayout中选项卡的图标大小

Android 如何增加TabLayout中选项卡的图标大小,android,Android,我正在尝试增加我的应用程序中选项卡的图标大小。图标大小是固定的,尝试了很多方法,但没有任何效果,最后尝试了以下方法,但大小没有变化。如果有人能告诉我正确的方法,我会很高兴。提前谢谢 这是我的密码 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); t

我正在尝试增加我的应用程序中选项卡的图标大小。图标大小是固定的,尝试了很多方法,但没有任何效果,最后尝试了以下方法,但大小没有变化。如果有人能告诉我正确的方法,我会很高兴。提前谢谢

这是我的密码

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>
<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"/>

50dp
50dp
tablayout.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>
<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"/>

您好,我以前也遇到过同样的问题,这是我能找到的最佳解决方案:

您应该使用(setCustomView),首先创建一个新的布局文件 让我们命名它(customtab.xml):

或 以类似的方式

public static final int[] tabIcon = {R.drawable.icon_one, R.drawable.icon_two, R.drawable.icon_three};

private void setCustomTabs() {

    for (int i = 0; i < tabIcon.length; i++) {
        View view = getLayoutInflater().inflate(R.layout.customtab,null);
        TabLayout.Tab tab = tabLayout.getTabAt(i);
        view.findViewById(R.id.icon).setBackgroundResource(tabIcon[i]);
        if(tab!=null) tab.setCustomView(view);
     }
 }
public static final int[]tabIcon={R.drawable.icon_one,R.drawable.icon_two,R.drawable.icon_three};
私有void setCustomTabs(){
对于(int i=0;i
如文档中所述,您可以使用
android:id=“@android:id/icon”
创建带有
ImageView的新布局,并将其设置为选项卡的自定义视图。TabLayout将使用
android:id/icon

然后在代码中,您可以在创建选项卡时调用
设置图标(R.drawable.yourcon)

然后可以在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);
}
mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.searchpin));
mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.discussionpin));
mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.userpin));
对于(int i=0;i
以下是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>

无需采用任何xml视图。创建imageview运行时并将图像添加为视图:)

for(int i=0;i

快乐编码

如果您想在所有屏幕内进行更改,我指的是完整应用程序,那么您可以尝试以下方法: 在名为:design\u layout\u tab\u 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,把它留在你的屏幕上,在标签栏上设置一些你想要的高度和viola!!!
它将适用于所有地方

这是一个自定义的表格布局它可以帮助很多

public class TabView extends TabLayout {

public TabView(Context context) {
    super(context);
    init();
}

public TabView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public TabView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init();
}

private void init() {
    int padding = 10;

    int[] icons = new int[]{R.drawable.ic_tel, R.drawable.ic_speaker, R.drawable.ic_camera, R.drawable.ic_home};

    for (int i = 0; i < icons.length; i++) {
        ImageView imageView = new ImageView(getContext());
        imageView.setBackgroundColor(Color.TRANSPARENT);
        imageView.setImageResource(icons[i]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        imageView.setPadding(padding, padding, padding, padding);
        if (i==3){
            addTab(newTab().setCustomView(imageView), i , true);
        } else {
            addTab(newTab().setCustomView(imageView), i);
        }
    }

}
public类选项卡视图扩展了TabLayout{
公共选项卡视图(上下文){
超级(上下文);
init();
}
公共选项卡视图(上下文、属性集属性){
超级(上下文,attrs);
init();
}
公共选项卡视图(上下文上下文、属性集属性、int-defStyleAttr){
super(上下文、attrs、defStyleAttr);
init();
}
私有void init(){
int=10;
int[]icons=newint[]{R.drawable.ic_电话,R.drawable.ic_扬声器,R.drawable.ic_摄像头,R.drawable.ic_主页};
对于(int i=0;i

}

非常感谢您。这是最好的解决方案:)但是我需要为每个选项卡创建不同的视图吗?iconI无法使用此选项设置选项卡文本approach@NeonWarge如果您添加一个文本视图,则可以在我的情况下,在我指定ID如下之前,框架无法获取图标ImageView:
android:ID=“@android:ID/icon”
可能是因为我正在处理一个相当大的代码库,它有自己的
id/icon
定义。考虑更新你的解决方案。为我工作。此外,如果要使用选择器表示不同的状态,则需要设置自定义视图的初始选定状态。tab.getCustomView().setSelected(tab.isSelected());选项卡图标大小是多少?这只是在values/dimens.xml文件中创建的一个图标大小。但是您可以使用任何想要的值。这将占用整个选项卡。如果我们有一个带有文本的图标,并且我们不希望文本消失,该怎么办?
public class TabView extends TabLayout {

public TabView(Context context) {
    super(context);
    init();
}

public TabView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public TabView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init();
}

private void init() {
    int padding = 10;

    int[] icons = new int[]{R.drawable.ic_tel, R.drawable.ic_speaker, R.drawable.ic_camera, R.drawable.ic_home};

    for (int i = 0; i < icons.length; i++) {
        ImageView imageView = new ImageView(getContext());
        imageView.setBackgroundColor(Color.TRANSPARENT);
        imageView.setImageResource(icons[i]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        imageView.setPadding(padding, padding, padding, padding);
        if (i==3){
            addTab(newTab().setCustomView(imageView), i , true);
        } else {
            addTab(newTab().setCustomView(imageView), i);
        }
    }

}
    View view5 = getLayoutInflater().inflate(R.layout.custom_icon, null);
    view5.findViewById(R.id.iconImg).setBackgroundResource(R.drawable.ambulance);
    icon_text=(TextView)view5.findViewById(R.id.icon_text);
    icon_text.setText("Blood Bank");
    tabLayout.addTab(tabLayout.newTab().setCustomView(view5));

    tabLayout.getTabAt(0).setIcon(tabIcons[0]).setCustomView(view1);