And*_*ech 20 android android-toolbar
我一直在使用AppCompatv7 lib中的最新工具栏.我在ToolBar ViewGroup中放置了一个textview我想从我的activity中的片段中为这个Textview设置一个标题.如果是自定义操作栏((ActionBarActivity)getActivity) .setcustomView(..)本来可以完成这项工作.但是由于使用了这个ToolBar,我无法使用它.我也在我的BaseActivity中实现了一个由所有Activities继承的方法.这个BaseActivity包含我初始化的方法左侧的滑动抽屉.我必须初始化活动中的initDrawerLayout()方法,否则抽屉不会被初始化.如果我在片段中初始化它给我所有空的结果,抽屉的切换按钮和也不是自定义标题设置.
这是我的initDrawer代码..
public void initDrawerLayout(String toolbar_text) {
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerRelative = (RelativeLayout) findViewById(R.id.drawer_relative);
if (mDrawerLayout != null) {
findViewById(R.id.drawer_btn_a).setOnClickListener(this);
findViewById(R.id.drawer_btn_b).setOnClickListener(this);
findViewById(R.id.drawer_btn_c).setOnClickListener(this);
findViewById(R.id.drawer_btn_d).setOnClickListener(this);
findViewById(R.id.drawer_btn_e).setOnClickListener(this);
findViewById(R.id.drawer_btn_f).setOnClickListener(this);
findViewById(R.id.drawer_btn_g).setOnClickListener(this);
findViewById(R.id.drawer_btn_h).setOnClickListener(this);
findViewById(R.id.drawer_btn_i).setOnClickListener(this);
findViewById(R.id.drawer_btn_j).setOnClickListener(this);
findViewById(R.id.drawer_btn_k).setOnClickListener(this);
findViewById(R.id.drawer_btn_l).setOnClickListener(this);
findViewById(R.id.my_layout).setOnClickListener(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
toolbar.setBackground(getResources().getDrawable(R.drawable.icn_actionbar_background));
TextView mTitle = (TextView) toolbar.findViewById(R.id.toolbar_title);
mTitle.setText(toolbar_text);
mTitle.setTypeface(Typeface.DEFAULT_BOLD);
if (toolbar != null) {
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
toolbar.setNavigationIcon(R.drawable.ic_drawer);
mDrawerToggle = new ActionBarDrawerToggle(
this, mDrawerLayout, toolbar,
R.string.drawer_open, R.string.drawer_close
);
mDrawerLayout.setDrawerListener(mDrawerToggle);
toolbar.setNavigationOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
mDrawerLayout.closeDrawer(Gravity.LEFT);
} else {
mDrawerLayout.openDrawer(Gravity.LEFT);
}
}
});
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
mDrawerLayout.setScrimColor(getResources().getColor(
android.R.color.transparent));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我片段中的代码..
((FirstActivity) getActivity()).initDrawerLayout(mFirst.name);
其中mFirst是Person类的对象
和工具栏代码..
<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize">
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="Toolbar Title"
android:textColor="@color/action_text-color"
android:textSize="18sp"
android:textStyle="bold" />
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
请帮帮我们..
小智 41
我是这样做的:来自片段调用
getActivity().setTitle("your title");
Run Code Online (Sandbox Code Playgroud)
您也可以调用父Activity的任何功能,如下所示:
YourActivity mYourActiviy = (YourActivity) getActivity();
mYourActivity.yourActivityFunction(yourParameters);
Run Code Online (Sandbox Code Playgroud)
ANU*_*PTA 11
如果您在您的活动中设置了支持操作栏,那么您可以轻松地从片段中更改工具栏标题
((YourActivity) getActivity()).getSupportActionBar().setTitle("Your Title");
Run Code Online (Sandbox Code Playgroud)
Coo*_*ind 11
在科特林。
片段中:
(activity as YourActivity).supportActionBar?.title = getString(R.string.your_title)
Run Code Online (Sandbox Code Playgroud)
活动中:
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
Run Code Online (Sandbox Code Playgroud)
您可以在 Fragment 内创建接口。检查以下:-
public class MyFragment extends Fragment {
OnMyFragmentListener mListener;
// Where is this method called??
public void setOnMyFragmentListener(OnMyFragmentListener listener) {
this.mListener = listener;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnMyFragmentListener) {
mListener = (OnMyFragmentListener) context;
mListener.onChangeToolbarTitle("My Fragment"); // Call this in `onResume()`
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
@Override
public void onResume(){
super.onResume();
mListener.onChangeToolbarTitle("My Fragment");
}
// This interface can be implemented by the Activity, parent Fragment,
// or a separate test implementation.
public interface OnMyFragmentListener {
public void onChangeToolbarTitle(String title);
}
}
Run Code Online (Sandbox Code Playgroud)
在活动中:-
public class MyActivity extends AppCompatActivity implements MyFragment.OnMyFragmentListener {
@Override
public void onChangeToolbarTitle(String title){
toolbar.setTitle(title);
}
}
Run Code Online (Sandbox Code Playgroud)
这对我有用。:)
小智 5
答案写在下面oncreateview的片段方法中。
getActivity().setTitle("your name");
Run Code Online (Sandbox Code Playgroud)
小智 5
这在 Kotlin 中对我有用。将其放入您的片段类中:
if (activity != null) {
(activity as MainActivity).supportActionBar?.title = getString(R.string.action_history)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41571 次 |
| 最近记录: |