1c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen/* 2c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * Copyright (C) 2015 The Android Open Source Project 3c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * 4c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * Licensed under the Apache License, Version 2.0 (the "License"); 5c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * you may not use this file except in compliance with the License. 6c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * You may obtain a copy of the License at 7c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * 8c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * http://www.apache.org/licenses/LICENSE-2.0 9c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * 10c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * Unless required by applicable law or agreed to in writing, software 11c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * distributed under the License is distributed on an "AS IS" BASIS, 12c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * See the License for the specific language governing permissions and 14c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * limitations under the License. 15c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen */ 16c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen 17c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsenpackage com.android.layoutlib.bridge.android.support; 18c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen 19c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsenimport com.android.ide.common.rendering.api.LayoutLog; 20c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsenimport com.android.layoutlib.bridge.Bridge; 21c102fc0ddf298edd8c1dd17454b564acb1b2bb80Deepanshu Guptaimport com.android.layoutlib.bridge.util.ReflectionUtils.ReflectionException; 22c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen 23c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsenimport android.annotation.NonNull; 24c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsenimport android.annotation.Nullable; 25c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsenimport android.view.View; 26c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen 27c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsenimport static com.android.layoutlib.bridge.util.ReflectionUtils.getMethod; 28c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsenimport static com.android.layoutlib.bridge.util.ReflectionUtils.invoke; 29c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen 30c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen/** 31c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * Utility class for working with the design support lib. 32c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen */ 33c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsenpublic class DesignLibUtil { 346ec650799e4fc9bdea0882af6415f76853beb194Diego Perez public static final String[] CN_COORDINATOR_LAYOUT = { 356ec650799e4fc9bdea0882af6415f76853beb194Diego Perez "android.support.design.widget.CoordinatorLayout", 366ec650799e4fc9bdea0882af6415f76853beb194Diego Perez "androidx.widget.CoordinatorLayout" 376ec650799e4fc9bdea0882af6415f76853beb194Diego Perez }; 386ec650799e4fc9bdea0882af6415f76853beb194Diego Perez public static final String[] CN_APPBAR_LAYOUT = { 396ec650799e4fc9bdea0882af6415f76853beb194Diego Perez "android.support.design.widget.AppBarLayout", 406ec650799e4fc9bdea0882af6415f76853beb194Diego Perez "androidx.design.widget.AppBarLayout" 416ec650799e4fc9bdea0882af6415f76853beb194Diego Perez }; 426ec650799e4fc9bdea0882af6415f76853beb194Diego Perez public static final String[] CN_COLLAPSING_TOOLBAR_LAYOUT = { 436ec650799e4fc9bdea0882af6415f76853beb194Diego Perez "android.support.design.widget.CollapsingToolbarLayout", 446ec650799e4fc9bdea0882af6415f76853beb194Diego Perez "androidx.design.widget.CollapsingToolbarLayout" 456ec650799e4fc9bdea0882af6415f76853beb194Diego Perez }; 466ec650799e4fc9bdea0882af6415f76853beb194Diego Perez public static final String[] CN_TOOLBAR = { 476ec650799e4fc9bdea0882af6415f76853beb194Diego Perez "android.support.v7.widget.Toolbar", 486ec650799e4fc9bdea0882af6415f76853beb194Diego Perez "androidx.widget.Toolbar" 496ec650799e4fc9bdea0882af6415f76853beb194Diego Perez }; 50c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen 51c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen /** 52c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * Tries to set the title of a view. This is used to set the title in a 53c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * CollapsingToolbarLayout. 54c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * <p/> 55c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen * Any exceptions thrown during the process are logged in {@link Bridge#getLog()} 56c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen */ 57c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen public static void setTitle(@NonNull View view, @Nullable String title) { 58c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen if (title == null) { 59c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen return; 60c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen } 61c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen try { 62c102fc0ddf298edd8c1dd17454b564acb1b2bb80Deepanshu Gupta invoke(getMethod(view.getClass(), "setTitle", CharSequence.class), view, title); 63c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen } catch (ReflectionException e) { 64c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen Bridge.getLog().warning(LayoutLog.TAG_INFO, 65c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen "Error occurred while trying to set title.", e); 66c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen } 67c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen } 68c46c84ee673934f340b27b40366a5a61669a4a1eJens Ole Lauridsen} 69