【问题标题】:How to set icon next to text in tablayout如何在tablayout中的文本旁边设置图标
【发布时间】:2016-03-26 00:23:41
【问题描述】:

我正在使用来自以下tutorial ..的文本和图标处理 Tablayout ..

我的问题是如何使图标放置在文本旁边而不是它们上方? 我是Android开发的新手,希望你们能帮助我。提前谢谢您,非常感谢您的回答..

这是我的 java 文件

public class AllProducts extends AppCompatActivity {

public ViewPager viewPager;
public TabLayout tabLayout;
    public int[] tabIcons = {
    R.drawable.ic_directions_car_white_24dp,
    R.drawable.ic_motorcycle_white_24dp,
    R.drawable.ic_build_white_24dp
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.all_products);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);


    viewPager = (ViewPager) findViewById(R.id.viewpager2);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
    tabLayout.setupWithViewPager(viewPager);
    setupTabIcons();

}

private void setupTabIcons() {
    tabLayout.getTabAt(0).setIcon(tabIcons[0]);
    tabLayout.getTabAt(1).setIcon(tabIcons[1]);
    tabLayout.getTabAt(2).setIcon(tabIcons[2]);
}


private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new Tab1(), "CAR");
    adapter.addFragment(new Tab2(), "MOTORCYCLE");
    adapter.addFragment(new Tab3(), "OTHERS");
    viewPager.setAdapter(adapter);
}

class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

}

【问题讨论】:

  • 那么,您要为此添加自定义布局吗?
  • 不,我只是用 java 编写代码。抱歉,我已经发布了代码。。
  • 使用自定义布局有什么问题吗?
  • 我需要使用自定义布局才能将图标放在文本旁边?
  • 你可以使用简单的 TextView

标签: android android-studio android-tablayout


【解决方案1】:

这很容易。

Tab tab = tabLayout.newTab();
tab.setCustomLayout( R.layout.whatever );
tabLayout.addTab(add);

您的布局将是一个简单的TextView,带有一个指定您的图标的drawableRight

更多:http://panavtec.me/playing-with-the-new-support-tablayout/

【讨论】:

  • 我这个方法的问题是,当你在选项卡中设置自定义布局时,Tablayout 不再能够根据选项卡是否被选中自动切换文本颜色。知道如何让它发挥作用吗?
【解决方案2】:

另一种解决方案是在您的活动.xml 中设置app:tabInlineLabel="true" 或调用TabLayout 方法setInlineLabel(true)

Source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2018-01-11
    • 1970-01-01
    • 2021-08-16
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多