开发者社区> 问答> 正文

Android-在运行时更改自定义标题视图

我在应用程序中为每个活动使用自定义标题视图。在一项活动中,基于按钮单击,我需要更改自定义标题视图。现在,每次我调用setFeatureInt时,此方法都可以正常工作。

但是,如果我尝试更新自定义标题中的任何项目(例如更改标题上的按钮文本或文本视图),则不会进行更新。

通过代码进行调试表明,文本视图和按钮实例不为null,我还可以看到自定义标题栏。但是,文本视图或按钮上的文本未更新。还有其他人遇到过这个问题吗?我该如何解决?

谢谢。

编辑

这是我尝试过的。即使调用postInvalidate也不会更新。


    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.text_title);

    TextView databar = (TextView) findViewById(R.id.title_text);
    databar.setText("Some Text");
    databar.postInvalidate();

    Button leftButton = (Button) findViewById(R.id.left_btn);
    leftButton.setOnClickListener(mLeftListener);
    leftButton.setText("Left Btn");
    leftButton.postInvalidate();

    Button rightBtn = (Button) findViewById(R.id.right_btn);
    rightBtn.setOnClickListener(mRightListener);
    rightBtn.postInvalidate();

展开
收起
Puppet 2020-01-19 11:52:55 407 0
1 条回答
写回答
取消 提交回答
  • 正确的方法如下:

    
    requestWindowFeature( Window.FEATURE_CUSTOM_TITLE );
    setContentView( R.layout.my_layout );
    getWindow().setFeatureInt( Window.FEATURE_CUSTOM_TITLE, R.layout.my_custom_title );
    super.onCreate( savedInstanceState );
    

    请注意,这些语句的顺序非常重要。

    如果您在其他任何语句之前调用super.onCreate(),则会得到一个空白的标题栏,该标题栏可以找到标题栏ID并从中删除所有视图的方法可以解决,但不建议这样做。

    2020-01-19 11:53:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载