Tabs 不带工具栏的材质设计固定选项卡

Tabs 不带工具栏的材质设计固定选项卡,tabs,android-actionbar,toolbar,material-design,Tabs,Android Actionbar,Toolbar,Material Design,我在找出代码中的“bug”时遇到了一个小问题。我不确定这是不是一个错误。但是,如图1所示,固定卡舌的位置在窗帘抽屉的后面。我不明白这是为什么。我看了几本教程,它们似乎没有同样的问题。 我试着用谷歌搜索,但我找不到类似的问题。以前有人经历过类似的事情吗 然而,在android studio中,设计布局似乎很贴切,而不是在编译时 我使用neokree库,这样我可以在选择选项卡时使用图标和涟漪效果。我曾尝试使用谷歌的标签布局,但当我试图删除actionbar并应用图标时,同样的问题发生了 谢谢 主要活

我在找出代码中的“bug”时遇到了一个小问题。我不确定这是不是一个错误。但是,如图1所示,固定卡舌的位置在窗帘抽屉的后面。我不明白这是为什么。我看了几本教程,它们似乎没有同样的问题。 我试着用谷歌搜索,但我找不到类似的问题。以前有人经历过类似的事情吗

然而,在android studio中,设计布局似乎很贴切,而不是在编译时

我使用neokree库,这样我可以在选择选项卡时使用图标和涟漪效果。我曾尝试使用谷歌的标签布局,但当我试图删除actionbar并应用图标时,同样的问题发生了

谢谢

主要活动

<?xml version="1.0" encoding="utf-8" ?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<it.neokree.materialtabs.MaterialTabHost
    android:id="@+id/materialTabHost"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    app:iconColor="@color/iconColor"
    app:primaryColor="@color/primaryColor"
    app:accentColor="@color/accentColor"
    app:hasIcons="true"/>

<android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="1"/>


</LinearLayout>

styles.xml

<resources>  
    <style name="AppTheme" parent="AppTheme.Base"></style>

    <style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">

        <item name="colorPrimary">@color/primaryColor</item>
        <item name="colorPrimaryDark">@color/primaryColorDark</item>
        <item name="colorAccent">@color/accentColor</item>
        <item name="colorControlHighlight">@color/colorHighlight</item>

    </style>
</resources>

@颜色/原色
@颜色/原色深色
@颜色/强调色
@颜色/高光
styles.xml v21

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- Base application theme. -->

    <!--Using same style as in default style.xml file-->
    <style name="AppTheme" parent="AppTheme.Base">
        <item name="android:colorPrimary">@color/primaryColor</item>
        <item name="android:colorPrimaryDark">@color/primaryColorDark</item>
        <item name="android:colorAccent">@color/accentColor</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:colorControlHighlight">@color/colorHighlight</item>
    </style>

</resources>

@颜色/原色
@颜色/原色深色
@颜色/强调色
真的
@颜色/高光
主要活动

import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ImageSpan;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import it.neokree.materialtabs.MaterialTab;
import it.neokree.materialtabs.MaterialTabHost;
import it.neokree.materialtabs.MaterialTabListener;


public class MainActivity extends ActionBarActivity implements MaterialTabListener
{

    private Toolbar toolbar;
    private ViewPager mPager;
    private SlidingTabLayout mTabs;

    private MaterialTabHost tabHost;
    private ViewPager viewPager;


    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tabHost = (MaterialTabHost) findViewById(R.id.materialTabHost);
        viewPager = (ViewPager) findViewById(R.id.viewPager);

        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(adapter);
        viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                tabHost.setSelectedNavigationItem(position);

            }
        });
        for (int i = 0; i < adapter.getCount(); i++) {
            tabHost.addTab(
                    tabHost.newTab()
                            .setIcon(adapter.getIcon(i))
                            .setTabListener(this));
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings)
        {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onTabSelected(MaterialTab materialTab) {
        viewPager.setCurrentItem(materialTab.getPosition());
    }

    @Override
    public void onTabReselected(MaterialTab materialTab) {

    }

    @Override
    public void onTabUnselected(MaterialTab materialTab) {

    }

    class ViewPagerAdapter extends FragmentStatePagerAdapter
    {

        int icons[] = {R.drawable.ic_home,
                R.drawable.ic_graph,
                R.drawable.ic_bell_mid,
                R.drawable.ic_settings};

        //String[] tabText = getResources().getStringArray(R.array.tabs);

        public ViewPagerAdapter(FragmentManager fm)
        {
            super(fm);
            //tabText = getResources().getStringArray(R.array.tabs);
        }

        @Override
        public Fragment getItem(int position)
        {
            MyFragment myFragment = MyFragment.getInstance(position);
            return myFragment;
        }

        //Attaching an image to a (spannable) string so we can show the image instead of text.
        @Override
        public CharSequence getPageTitle(int position){
            /*Drawable drawable = getResources().getDrawable(icons[position]);
            //icon bounds/size
            drawable.setBounds(0,0,96,96);
            ImageSpan imageSpan = new ImageSpan(drawable);
            SpannableString spannableString = new SpannableString(" ");
            spannableString.setSpan(imageSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            return spannableString;*/
            return getResources().getStringArray(R.array.tabs)[position];
        }

        @Override
        public int getCount()
        {
            return 4;
        }

        private Drawable getIcon(int position)
        {
            return getResources().getDrawable(icons[position]);
        }
    }
}
导入android.graphics.drawable.drawable;
导入android.support.annotation.Nullable;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.support.v4.app.FragmentStatePagerAdapter;
导入android.support.v4.view.ViewPager;
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入android.text.SpannableString;
导入android.text.span;
导入android.text.style.ImageSpan;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.support.v7.widget.Toolbar;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.TextView;
导入it.neokree.materialtabs.MaterialTab;
导入it.neokree.materialtabs.MaterialTabHost;
导入it.neokree.materialtabs.MaterialTabListener;
公共类MainActivity扩展ActionBarActivity实现MaterialTableListener
{
专用工具栏;
私人寻呼机;
私人滑动可布局MTAB;
私有材料主选项卡主机;
私人视页机视页机;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabHost=(MaterialTabHost)findViewById(R.id.MaterialTabHost);
viewPager=(viewPager)findViewById(R.id.viewPager);
ViewPagerAdapter适配器=新的ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(适配器);
viewPager.setOnPageChangeListener(新的viewPager.SimpleOnPageChangeListener(){
@凌驾
已选择页面上的公共无效(内部位置){
tabHost.setSelectedNavigationItem(位置);
}
});
对于(inti=0;i

在无意中看完了youtube上关于制作简单材质设计选项卡的教程后,我又做了一个新项目
<item name="android:windowTranslucentStatus">true</item> 
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
   android:layout_height="wrap_content"
   android:layout_width="match_parent"
   android:background="@color/ColorPrimary"
   android:elevation="2dp"
   android:theme="@style/Theme.AppCompat.NoActionBar"
   xmlns:android="http://schemas.android.com/apk/res/android" />
<include
    android:id="@+id/tool_bar"
    layout="@layout/tool_bar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    />