为什么getApplicationContext和Activity上下文会膨胀不同的微调器样式?

时间:2017-12-06 01:49:00

标签: android android-spinner android-context

我有一个奇怪的问题。我在xml中有2个预定义的微调器。但是,项目和相关的下拉项目在运行时呈现。

但是,以下2个语句提供了不同的布局结果。我不知道为什么结果是这样的。但主要区别在于getApplicationContext()this

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item, getSrvNumList());
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Normal layout

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),
        android.R.layout.simple_spinner_item, getSrvNumList());
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Strange text color

2 个答案:

答案 0 :(得分:0)

作为@MikeM。评论说,这是关于上下文的问题。希望以下答案可以帮助解决此问题的人。

使用Activity上下文代替Application上下文

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MyActivity.this,
        android.R.layout.simple_spinner_item, getSrvNumList());

否则,应用程序将获得不同的主题来呈现微调器。

答案 1 :(得分:0)

根据this post(查看第3章),我们可以考虑两种类型的上下文:UI-Context(例如getActivity()view.getContext() ...)和非UI -Context(例如getApplicationContext() ...)。

当膨胀视图时,让我们使用UI-Context来保持其应用程序主题。该规则是: * Do you need to access UI related stuff? Use UI-Context. * Otherwise, Use Non-UI Context.