2017-10-20 6 views
0

普通のToolbarを独自のカスタムテーマに置き換える必要があります。 私は、次のコードを使用しますが、何も表示されません:ツールバーのaddViewが機能しない

マイMainActivity

MainActivity
public class MainActivity extends AppCompatActivity { 

    private Toolbar mToolbar; 
    private View mView; 
    private TabLayout mTabLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 

     mToolbar = (Toolbar) findViewById(R.id.toolbar); 

     setSupportActionBar(mToolbar); 

     mView = 
     LayoutInflater.from(this).inflate(R.layout.item_toolbar_main, null); 
     mToolbar.addView(mView); 

     ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 

     setupViewPager(viewPager); 

     mTabLayout = (TabLayout) findViewById(R.id.tabs); 
     mTabLayout.setupWithViewPager(viewPager); 

     View view1 = View.inflate(this, R.layout.item_tablayout_item, 
    null); 



view1.findViewById(R.id.icon).setBackgroundResource(R.drawable.ic_solved); 

     View view2 = View.inflate(this, R.layout.item_tablayout_item, 
    null); 



view2.findViewById(R.id.icon).setBackgroundResource(R.drawable.ic_unsolved) 
    ; 

     try { 
      mTabLayout.getTabAt(0).setCustomView(mView); 
      mTabLayout.getTabAt(1).setCustomView(mView); 
     } catch (Exception ex) { 
      //Add crashlitics; 
     } 

    } } 

マイXML

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.divofmod.quizerfield.Activities.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/colorWhite" 
      android:paddingBottom="@dimen/activity_margin_quarter" 
      android:paddingLeft="@dimen/activity_margin_half" 
      android:paddingRight="@dimen/activity_margin_half" 
      app:contentInsetEnd="@dimen/activity_margin_zero" 
      app:contentInsetLeft="@dimen/activity_margin_zero" 
      app:contentInsetRight="@dimen/activity_margin_zero" 
      app:contentInsetStart="@dimen/activity_margin_zero" 
      app:layout_scrollFlags="scroll|enterAlways"/> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabGravity="fill" 
      app:tabMode="fixed"/> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
</android.support.design.widget.CoordinatorLayout> 

マイXMLToolbarの項目:

<RelativeLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:descendantFocusability="beforeDescendants" 
       android:focusableInTouchMode="true" 
       > 

    <ImageView 
     android:id="@+id/logoQuizer" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/image_medium" 
     android:layout_marginBottom="@dimen/activity_margin_half" 
     android:layout_marginTop="@dimen/activity_margin_half" 
     android:foregroundGravity="center_vertical" 
     android:src="@drawable/logo_quizer"/> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/logoQuizer" 
     android:orientation="horizontal"> 

     <ImageView 
      android:id="@+id/send" 
      android:layout_width="@dimen/icon_small" 
      android:layout_height="@dimen/icon_small" 
      android:layout_alignParentLeft="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginLeft="@dimen/activity_margin_half" 
      android:src="@drawable/ic_send"/> 

     <ImageView 
      android:id="@+id/sort" 
      android:layout_width="@dimen/icon_small" 
      android:layout_height="@dimen/icon_small" 
      android:layout_centerHorizontal="true" 
      android:layout_marginLeft="@dimen/activity_margin_quarter" 
      android:layout_marginRight="@dimen/activity_margin_half" 
      android:layout_toLeftOf="@+id/refresh" 
      android:src="@drawable/ic_sort"/> 

     <ImageView 
      android:id="@+id/refresh" 
      android:layout_width="@dimen/icon_small" 
      android:layout_height="@dimen/icon_small" 
      android:layout_alignParentRight="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginLeft="@dimen/activity_margin_quarter" 
      android:layout_marginRight="@dimen/activity_margin_half" 
      android:src="@drawable/ic_refresh"/> 
    </RelativeLayout> 
</RelativeLayout> 

マイAppTheme

style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 
+0

あなたの質問は何ですか?コードを実行するとどうなりますか? – Xenolion

+0

質問は間違っていますか?私はカスタムツールバーが表示されません – ManOfWar

答えて

1

最も簡単な方法は、レイアウト全体をitem_toolbar_mainとし、Javaコードを使用せずにxml形式でToolbarに直接設定することです。したがって、このような何かにあなたのレイアウトactivity_main.xmlToolbar表示を変更:

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/colorWhite" 
     android:paddingBottom="@dimen/activity_margin_quarter" 
     android:paddingLeft="@dimen/activity_margin_half" 
     android:paddingRight="@dimen/activity_margin_half" 
     app:contentInsetEnd="@dimen/activity_margin_zero" 
     app:contentInsetLeft="@dimen/activity_margin_zero" 
     app:contentInsetRight="@dimen/activity_margin_zero" 
     app:contentInsetStart="@dimen/activity_margin_zero" 
     app:layout_scrollFlags="scroll|enterAlways"> 

      <include layout="@layout/item_toolbar_main"/> 

</android.support.v7.widget.Toolbar> 

これは動作します。私は<include>を使用しましたが、の全体をitem_toolbar_mainからの代わりにandroid.support.v7.widget.Toolbarの内側にコピーして貼り付けることができます。

+0

ありがとう!期待どおりに動作します。 – ManOfWar

+0

**ハッピーコーディング!** @ManOfWar – Xenolion

0

あなたはそれを置き換えるためにsetSupportActionBar(theNewToolbar)を呼び出すことはありません、なぜ...交換したい場合は?

+0

私はすでにそれを行っている。 MainActivivtyのsetSupportActionBar(mToolbar)をチェックします。 – ManOfWar

関連する問題