Android 库项目中未使用主题
Android theme not used in library project
我正在构建一个基于用户请求的 returns Views
库项目。但是,我在库项目中创建的 Views
不使用我在应用程序中使用的主题。
例如,如果库项目 returns 一个 Fragment
其中有一个 EditText
,那么即使应用程序 EditText
也不会使用 AppCompat 主题正在使用。
这里是库项目class中用来给Views
充气的相关部分:
public abstract class AbsInputFieldViewController<T extends AbsInputField> {
protected Context getContext(){
return mFragment.getActivity().getApplicationContext();
}
protected LayoutInflater getInflater(){
return (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public abstract View getView(AbsInputField field, Fragment fragment);
}
getView()
在几个子 classes 中实现,它使用 getInflater()
中的 LayoutInflater
从布局中膨胀 View
实例 xml。
问题是您正在使用 getSystemService()
获得 LayoutInflater
。如果您希望 LayoutInflater
使用特定主题,您必须从使用该主题的 Context
创建它。通常是 Activity
或您的 Application
中的 Context
。试试这个:
LayoutInflater inflater = LayoutInflater.from(context);
我正在构建一个基于用户请求的 returns Views
库项目。但是,我在库项目中创建的 Views
不使用我在应用程序中使用的主题。
例如,如果库项目 returns 一个 Fragment
其中有一个 EditText
,那么即使应用程序 EditText
也不会使用 AppCompat 主题正在使用。
这里是库项目class中用来给Views
充气的相关部分:
public abstract class AbsInputFieldViewController<T extends AbsInputField> {
protected Context getContext(){
return mFragment.getActivity().getApplicationContext();
}
protected LayoutInflater getInflater(){
return (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public abstract View getView(AbsInputField field, Fragment fragment);
}
getView()
在几个子 classes 中实现,它使用 getInflater()
中的 LayoutInflater
从布局中膨胀 View
实例 xml。
问题是您正在使用 getSystemService()
获得 LayoutInflater
。如果您希望 LayoutInflater
使用特定主题,您必须从使用该主题的 Context
创建它。通常是 Activity
或您的 Application
中的 Context
。试试这个:
LayoutInflater inflater = LayoutInflater.from(context);