在布局来自LayoutInflator

时间:2015-07-26 13:50:59

标签: android

我正在制作自定义操作栏布局,我想在所有活动中重复使用它。为此,我希望能够将操作栏布局中的标题设置为活动标题

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);
}

2 个答案:

答案 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/