我试图实现一个自定义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()必须被调用吗?
正如提示里说的,不要在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() );
// ...
}
}
是的,之前也碰到相似的问题 ,也是这样解决的。
怎么一定要30个字才能提交,不太好吧 ?
为什么都是不行的呢。
用AppCompactActivity的话我记得是没有标题栏的,它应该用的是ActionBar,你应该用去掉Actionbar的方法