我正在制作自定义操作栏布局,我想在所有活动中重复使用它。为此,我希望能够将操作栏布局中的标题设置为活动标题
View actionBarView =LayoutInflater.from(senderActivity.getApplicationContext()).inflate(R.layout.az_actionbar, null);
((TextView)actionBarView.findViewById(R.id.azActionBar_tv_title)).setText("tetetete");
但TextView不会更改其文本(不显示“tetetetete”)
任何想法为什么会发生这种情况?或者有更好的方法来全局应用自定义ActionBar布局吗?
The method I used to customize the actionbar.
使用Helper.setAzCustomActionBar(this)
的每个活动在onCreate上调用的辅助方法的Java代码:
public static void setAzCustomActionBar(AppCompatActivity sender){
//getting the activity title
String title;
try {
ActivityInfo activityInfo = sender.getPackageManager().getActivityInfo(
sender.getComponentName(), PackageManager.GET_META_DATA);
title = activityInfo.loadLabel(sender.getPackageManager())
.toString();
} catch (PackageManager.NameNotFoundException e) {
title = "abcd";
}
View actionBarView = LayoutInflater.from(sender.getApplicationContext()).inflate(R.layout.az_actionbar, null);
//This is the line that doesn't work
((TextView) actionBarView.findViewById(R.id.azActionBar_tv_title)).setText(title);
sender.getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
sender.getSupportActionBar().setCustomView(R.layout.az_actionbar);
}
答案 0 :(得分:1)
您必须将“已更改”的自定义视图设置为操作栏的自定义视图。
将sender.getSupportActionBar().setCustomView(actionBarView);
更改为ChartIt
答案 1 :(得分:0)
“还是有更好的方法可以全局应用自定义ActionBar布局吗?”
是。最好的方法是使用工具栏小部件。
android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="#2196F3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
这个答案谈到了它 - Android Lollipop Toolbar vs Custom view
https://chris.banes.me/2014/10/17/appcompat-v21/
http://javatechig.com/android/android-lollipop-toolbar-example
https://blog.xamarin.com/android-tips-hello-toolbar-goodbye-action-bar/