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);