大家好,每个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());
我的问题是为什么区别LayoutInflater造成SearchView Icon的差异?
答案 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.