2016-08-12 53 views
1

片段更改时,如何在Toolbar内更改Textview?我的工具栏位于BaseActivity,所以我可以在所有活动中使用。片段中的工具栏标题

<android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:popupTheme="@style/AppTheme.PopupOverlay"> 

       <FrameLayout 
        android:layout_width="match_parent" 
        android:layout_height="match_parent"> 

        <TextView 
         android:id="@+id/toolbar_title" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center" 
         android:layout_marginBottom="4dp" 
         android:layout_marginLeft="20dp" 
         ndroid:layout_marginRight="attr/actionBarSize" 
         android:layout_marginTop="4dp" 
         android:textColor="@color/colorAccent2" 
         android:textSize="19sp" 
         tools:ignore="HardcodedText" /> 


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

回答

1

你可以使用这条线很容易地改变标题:

((MyAppCompatBaseActivity)getActivity()).getSupportActionBar().setTitle("Hello World!"); 

编辑:

我刚才看到你有一个TextViewToolbar内。因此,要设置标题做在您的BaseActivity:

public class BaseActivity extends AppCompatActivity { 

    TextView textViewTitle; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // Other Code 
     textViewTitle = (TextView) findViewById(R.id.toolbar_title); 
    } 

    public void setTitle(String title) { 
     textViewTitle.setText(title); 
    } 

} 
在片段

然后只是这样做:

((BaseActivity)getActivity()).setTitle("Hello World!"); 
+0

这didnt工作。因为我的片段是在标签布局,它给所有我的片段标题相同的标题 –

+0

我编辑了我的答案。请尝试。 –

+0

它看起来像工作,但没有更新标题,如果我改变e.x的片段从第一到第二或从第三到第二。为什么? –

0

只要你能做到这一点你onCreateView()方法内。

getActivity().setTitle("Your Title"); 

编辑1:

对于center使title你需要让你的layout像下面。

<android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:paddingLeft="0dp" 
      android:paddingRight="0dp" 
      android:layout_width="match_parent" 
      app:contentInsetStart="0dp" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary"> 

      <TextView 
        android:id="@+id/toolbar_title" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:gravity="center" 
        android:text="LOGO" 
        android:textColor="@color/colorAccent" 
        android:textSize="32sp" 
        android:textStyle="bold" 
        tools:ignore="HardcodedText" /> 

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

如何使它在garavity(中心)比 –

+0

@AlimovShohrukh检查我编辑的答案。 –

+0

that does not work,sorry –

0

textView和工具栏为公众在BaseActivity。现在在你的片段中使用下面的代码。

((BaseActivity)getActivity()).yourTextView.setText("HOME"); 
+0

谢谢。我已经doyne这个,它的工作 –

-1

只需添加到您的代码

((MainActivity) getActivity()).getSupportActionBar().setTitle("Yeeee"); 
+0

最好是,如果解释更多的答案...这可能是非常有用的未来用户有同样的问题... – DaFois

+0

我会建议扩大你的答案。 –

+1

上面的@Eric B.可能重复。这确实是正确答案 –