2 xiaoyan 12 xiaoyan_12 于 2012.10.23 11:25 提问

添加content前requestFeature()必须被调用?

我试图实现一个自定义titlebar.
以下是Helper class:

import android.app.Activity;
import android.view.Window;

public class UIHelper {
    public static void setupTitleBar(Activity c) {
        final boolean customTitleSupported = c.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

        c.setContentView(R.layout.main);

        if (customTitleSupported) {
            c.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
        }
    }
}

这是在onCreate()中调用的方法:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupUI();
    }

private void setupUI(){
         setContentView(R.layout.main);
         UIHelper.setupTitleBar(this);
    }

错误提醒:

requestFeature() must be called before adding content

在添加content前requestFeature()必须被调用吗?

4个回答

hxn_217
hxn_217   2012.10.26 17:19
已采纳

正如提示里说的,不要在requestFeature()调用setContentView()。
另一个选择是使用AsyncTask对话框。

public class CustomDialog extends AlertDialog {

   private View content;

   public CustomDialog(Context context) {
       super(context);

       LayoutInflater li = LayoutInflater.from(context);
       content = inflater.inflate(R.layout.custom_view, null);

       setUpAdditionalStuff(); 
       setView(content);           
   }

   private void setUpAdditionalStuff();
       // ...
   }

   // 在 onPrepareDialog() 方法中调用 ((CustomDialog) dialog).prepare()   
   public void prepare() {
       setTitle(R.string.custom_title);
       setIcon( getIcon() );
       // ...
   }
}
pby_bob
pby_bob   2012.10.23 13:49

是的,之前也碰到相似的问题 ,也是这样解决的。
怎么一定要30个字才能提交,不太好吧 ?

suannai0314
suannai0314 现在已经不是30个字了,10个字就可以了
5 年多之前 回复
curie_87
curie_87 呵呵,如果字数很少,你可以用添加评论的方式哦!
5 年多之前 回复
niunan
niunan   2015.07.12 18:08

图片说明

为什么都是不行的呢。

wsb200514
wsb200514 回复niunan: 骚瑞,看错了,还是不行啊。
大约 2 年之前 回复
wsb200514
wsb200514 回复niunan: 正解。但是标题文字是没了,标题栏还在,仍然占据了上面空间。请教一下怎么破,是不是还有其他参数哈?
大约 2 年之前 回复
niunan
niunan 回复qq_26870769: android studio新建activity继承了v7的AppCompactActivity,改为Activity就可以了
2 年多之前 回复
qq_26870769
qq_26870769 你好,我也遇到这样的问题,无论两句的顺序怎么样都是报错,你解决了这个问题了吗?
2 年多之前 回复
qq_38419590
qq_38419590   2017.10.16 21:12

用AppCompactActivity的话我记得是没有标题栏的,它应该用的是ActionBar,你应该用去掉Actionbar的方法

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!