2015-03-02 127 views
2

我有一個小問題找出我的代碼中的「錯誤」。我不知道它是否有bug。但是,正如您在圖片1中看到的那樣,固定標籤的位置位於窗簾抽屜後面。我無法找到/理解這是爲什麼。我跟着幾個教程,他們似乎沒有同樣的問題。 我試圖谷歌它,但我不能找到類似的問題。任何人有過類似的經歷嗎?材料設計固定選項卡沒有工具欄

在android工作室,設計佈局似乎是在點,但是,不編譯時。

我使用neokree lib,所以我可以在選擇標籤時使用圖標和漣漪效果。我試圖使用谷歌的標籤佈局link here,但只要我試圖刪除操作欄並應用圖標,發生同樣的問題。

謝謝!

activity_main

<?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> 

MainActivity

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]); 
     } 
    } 
} 

tabLayout activity_main layout

回答

0

意外得到了一個YouTube教程的製作簡單材料的設計選項卡後,我做了一個新的項目,並開始同我在YouTube上找到我的舊的結合。最終,我發現樣式文件中的以下代碼行是問題的原因。

<item name="android:windowTranslucentStatus">true</item> 

它似乎是我爲測試添加的東西,以後忘記刪除。

0

嘗試添加工具欄有沒有動作條主題..

爲了做到這一點,你必須做出一個新的XML文件名爲tool_bar.xml和下面的代碼粘貼到其中:

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

然後您將其添加到您的activity_main.xml文件中:

<include 
    android:id="@+id/tool_bar" 
    layout="@layout/tool_bar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    />