2016-02-17 6 views
1

У меня есть активность со многими фрагментами. Когда я меняю фрагменты, мне тоже нужно изменить, и моя панель инструментов объявлена ​​в MainActivity.class. Моя проблема в том, что я включаю макет и не нашел способ изменить этот макет. Как изменить макет панели инструментов в этом случае? MainActivity.classПанель изменения панели инструментов Android

@ContentView(R.layout.activity_main) 
    public class MainActivity extends RoboActionBarActivity { 

     @InjectView(R.id.tool_bar) 
     Toolbar toolbar; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setToolBar(); 
      if (savedInstanceState == null) { 
       getSupportFragmentManager().beginTransaction() 
         .add(R.id.container, new SplashFragment()) 
         .commit(); 
      } else { 
       getSupportFragmentManager().beginTransaction() 
         .replace(R.id.container, new HomeFragment()) 
         .commit(); 
      } 
     } 
    private void setToolBar() { 
      setSupportActionBar(toolbar); 
     } 

     @Override 
     public void onAttachFragment(Fragment fragment) { 
      super.onAttachFragment(fragment); 
      String currentFragmentClass = fragment.getClass().getSimpleName(); 
      if (currentFragmentClass.equals(getString(R.string.info_fragment))) { 
    //here i need to change and set onclicks 
      } 
     } 
    } 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
    <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="match_parent" 
     tools:context=".activities.MainActivity"> 

     <include 
      android:id="@+id/tool_bar" 
      layout="@layout/tool_bar" /> 

     <View 
      android:id="@+id/shadow_view" 
      android:layout_width="match_parent" 
      android:layout_height="1dp" 
      android:layout_below="@+id/tool_bar" 
      android:background="#ad8c22" /> 

     <FrameLayout 
      android:id="@+id/container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/shadow_view" 
      tools:context=".activities.MainActivity" 
      tools:ignore="MergeRootFrame" /> 
    </RelativeLayout> 

tool_bar.xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/colorToolBar" 
    > 
    <RelativeLayout 
     android:id="@+id/toolbar_main_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="5dp"> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:onClick="toggleSlidingMenu" 
      android:src="@mipmap/icon_sliding_menu" /> 
     <ImageView 
      android:id="@+id/app_logo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:src="@mipmap/jammboree" /> 
     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      android:layout_toRightOf="@+id/app_logo" 
      android:padding="5dp"> 
      <ImageView 
       android:id="@+id/hotlist_bell" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:contentDescription="bell" 
       android:gravity="center" 
       android:padding="7dp" 
       android:src="@mipmap/icon_my_cart" /> 
      <TextView 
       android:id="@+id/hotlist_hot" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignRight="@id/hotlist_bell" 
       android:layout_alignTop="@id/hotlist_bell" 
       android:background="@drawable/rounded_square" 
       android:gravity="center" 
       android:minWidth="17sp" 
       android:padding="2dp" 
       android:text="2" 
       android:textColor="#ffffffff" 
       android:textSize="12sp" /> 
      <TextView 
       android:id="@+id/myMoneyInMyPocket" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_below="@+id/hotlist_bell" 
       android:text="2000$" 
       android:textColor="#ffffff" 
       android:textSize="14sp" 
       android:textStyle="bold" /> 
     </RelativeLayout> 
    </RelativeLayout> 
</android.support.v7.widget.Toolbar> 
+0

Мой ответ на аналогичный вопрос был проголосован. http://stackoverflow.com/questions/35303630/how-to-update-toolbar-options-from-fragment/35327518#35327518. Помогает ли это? – BryanT

ответ

3

Если я понял правильно, вы хотите изменить панель инструментов всякий раз, когда вы изменить Фрагмент, в котором находится пользователь я вижу, разве это не так?

Существует очень простой способ достичь этого через ваш XML. Предположим, вам нужны три разных стиля панелей инструментов.

1) Сначала вы создаете файлы XML для каждой панели инструментов, в которой вы нуждаетесь.

2) Затем включить каждую панель в свой activity_main.xml, как это:

<?xml version="1.0" encoding="utf-8"?> 
<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="match_parent" 
    tools:context=".activities.MainActivity"> 

    <include 
     android:id="@+id/toolbar1" 
     layout="@layout/tool_bar1" 
     android:visibility="visible" /> 

    <include 
     android:id="@+id/toolbar2" 
     layout="@layout/tool_bar2" 
     android:visibility="gone" /> 

    <include 
     android:id="@+id/toolbar3" 
     layout="@layout/tool_bar3" 
     android:visibility="gone" /> 

    // Here is the rest of your XML code 

</RelativeLayout> 

Посмотрите, как все три панели инструментов включает в себя имеют свойство видимости?

Ну, теперь вы можете играть с этим свойством и показывать/скрывать нужную панель инструментов, когда захотите/нуждаетесь.

Например:

RelativeLayout mLayout = (RelativeLayout) getActivity().findViewById(R.id.my_main_layout); 

Toolbar mToolbar1 = (Toolbar) mLayout.findViewById(R.id.toolbar1); 
mToolbar1.setVisibility(View.GONE); 

Toolbar mToolbar2 = (Toolbar) mLayout.findViewById(R.id.toolbar2); 
mToolbar2.setVisibility(View.GONE); 

Toolbar mToolbar3 = (Toolbar) mLayout.findViewById(R.id.toolbar3); 
mToolbar3.setVisibility(View.VISIBLE); 

И просто изменить какой вы сделать видимым, в соответствии с вашими потребностями.

Надеюсь, это поможет.

Смежные вопросы