1fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes/* 2fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * Copyright (C) 2014 The Android Open Source Project 3fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * 4fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 5fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * you may not use this file except in compliance with the License. 6fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * You may obtain a copy of the License at 7fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * 8fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * http://www.apache.org/licenses/LICENSE-2.0 9fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * 10fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * Unless required by applicable law or agreed to in writing, software 11fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * distributed under the License is distributed on an "AS IS" BASIS, 12fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * See the License for the specific language governing permissions and 14fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * limitations under the License. 15fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes */ 16fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes 17fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banespackage android.support.v4.view; 18fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes 19fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesimport android.content.Context; 20fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesimport android.util.AttributeSet; 21fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesimport android.view.LayoutInflater; 22fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesimport android.view.View; 23fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes 24fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesclass LayoutInflaterCompatBase { 25fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes 26fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes static class FactoryWrapper implements LayoutInflater.Factory { 27fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes 28fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes final LayoutInflaterFactory mDelegateFactory; 29fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes 30fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes FactoryWrapper(LayoutInflaterFactory delegateFactory) { 31fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes mDelegateFactory = delegateFactory; 32fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes } 33fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes 34fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes @Override 35fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes public View onCreateView(String name, Context context, AttributeSet attrs) { 36fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes return mDelegateFactory.onCreateView(null, name, context, attrs); 37fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes } 3810850534c9e2949857133437cf1cd9af82721ab1Adam Powell 3910850534c9e2949857133437cf1cd9af82721ab1Adam Powell public String toString() { 4010850534c9e2949857133437cf1cd9af82721ab1Adam Powell return getClass().getName() + "{" + mDelegateFactory + "}"; 4110850534c9e2949857133437cf1cd9af82721ab1Adam Powell } 42fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes } 43fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes 44fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes static void setFactory(LayoutInflater inflater, LayoutInflaterFactory factory) { 45fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes inflater.setFactory(factory != null ? new FactoryWrapper(factory) : null); 46fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes } 47fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes 4856594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki static LayoutInflaterFactory getFactory(LayoutInflater inflater) { 4956594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki LayoutInflater.Factory factory = inflater.getFactory(); 5056594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki if (factory instanceof FactoryWrapper) { 5156594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki return ((FactoryWrapper) factory).mDelegateFactory; 5256594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki } 5356594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki return null; 5456594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki } 5556594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki 56fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes} 57