代码之家  ›  专栏  ›  技术社区  ›  Mateut Alin

Android选项卡-设置自定义视图问题

  •  -7
  • Mateut Alin  · 技术社区  · 7 年前

    我正在尝试使用自定义视图制作一些选项卡。这是我的密码

    View tabContent = LayoutInflater.from(this).inflate(R.layout.tab_content, null);
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    TextView tabText = (TextView) tabContent.findViewById(R.id.tabText);
    
    tabText.setText("Tab 1");
    tabLayout.addTab(tabLayout.newTab().setCustomView(tabContent));
    
    tabText.setText("Tab 2");
    tabLayout.addTab(tabLayout.newTab().setCustomView(tabContent));
    
    tabText.setText("Tab 3");
    tabLayout.addTab(tabLayout.newTab().setCustomView(tabContent));
    

    enter image description here

    现在,有趣的是,如果我试着只设置文本,如下所示:

    tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));

    一切正常(文本已呈现)。。。但因为那个计数器,我需要那个自定义视图。

    有人能解释一下为什么会这样吗?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Vidhi Dave    7 年前

    试试这个:

    View tabContent = LayoutInflater.from(this).inflate(R.layout.tab_content, null);
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    TextView tabText1 = (TextView) tabContent.findViewById(R.id.tabText);
    TextView tabText2 = (TextView) tabContent.findViewById(R.id.tabText);
    TextView tabText3 = (TextView) tabContent.findViewById(R.id.tabText);
    
    tabText1.setText("Tab 1");
    tabLayout.getTabAt(0).setCustomView(tabText1);
    
    tabText2.setText("Tab 2");
    tabLayout.getTabAt(1).setCustomView(tabText2);
    
    tabText3.setText("Tab 3");
    tabLayout.getTabAt(2).setCustomView(tabText3);
    
        2
  •  1
  •   Mateut Alin    7 年前

    有必要给轮胎充气 tabContent 3次,因为 setCustomView() 选项卡内容 对象将影响其余选项卡

        3
  •  1
  •   Pritesh - ɐʎıɥpɐΛ É¥sǝʇᴉɹꓒ    7 年前

    活动Java语言 并修改和设置如下代码所示的选项卡

    TextView tabOne = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
    tabOne.setText("ONE");
    tabOne.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_tab_favourite, 0, 0);
    tabLayout.getTabAt(0).setCustomView(tabOne); 
    
    
    TextView tab2 = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
    tab2.setText("TWO");
    tab2.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_tab_favourite, 0, 0);
    tabLayout.getTabAt(1).setCustomView(tab2);
    
    TextView tab3 = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
    tab3.setText("THREE");
    tab3.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_tab_favourite, 0, 0);
    tabLayout.getTabAt(2).setCustomView(tab3);