为什么区别LayoutInflater会导致SearchView Icon出现差异

时间:2014-10-09 14:50:11

标签: java android

大家好,每个Android极客,我都使用LayoutInflater给客户My Android ActionBar。

但是我发现不同的LayoutInflater会导致产生差异的SearchView图标

这是我的差异LayoutInflater和捕获图像

LayoutInflater mInflater1 =(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//You can change mInflater1 =LayoutInflater.from(this); is a same result

LayoutInflater mInflater2 =LayoutInflater.from(getApplicationContext());

This is mInflater1 Result

This is mInflater2 Result

我的问题是为什么区别LayoutInflater造成SearchView Icon的差异?

2 个答案:

答案 0 :(得分:3)

问题在于,在第二个示例中(我认为与第一张图片相关),您正在使用应用程序上下文来扩充视图而不是活动上下文。

该框架做了大量工作,以确保使用正确的屏幕密度,主题和其他此类信息正确配置Activity的Context。预计应用程序不需要担心显示内容,因此不会将其配置为执行此操作。

不要使用Application上下文来扩充视图或获取资源。使用活动上下文。

答案 1 :(得分:1)

嗯,上下文确定从哪里(主题)创建图标。我想你的操作系统和应用程序有不同的主题 在这里阅读更多http://developer.android.com/reference/android/view/LayoutInflater.html

The Context in which this LayoutInflater will create its Views; most importantly, this supplies the theme from which the default values for their attributes are retrieved.