14dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen/* 24dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Copyright (C) 2015 The Android Open Source Project 34dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * 44dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Licensed under the Apache License, Version 2.0 (the "License"); 54dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * you may not use this file except in compliance with the License. 64dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * You may obtain a copy of the License at 74dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * 84dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * http://www.apache.org/licenses/LICENSE-2.0 94dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * 104dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Unless required by applicable law or agreed to in writing, software 114dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * distributed under the License is distributed on an "AS IS" BASIS, 124dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * See the License for the specific language governing permissions and 144dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * limitations under the License. 154dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen */ 164dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen 174dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenpackage com.android.layoutlib.bridge.android.support; 184dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen 194dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport com.android.ide.common.rendering.api.LayoutLog; 204dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport com.android.layoutlib.bridge.Bridge; 21671b7f9b99316f7224c1213d6923d449a2de9b62Deepanshu Guptaimport com.android.layoutlib.bridge.util.ReflectionUtils.ReflectionException; 224dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen 234dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport android.annotation.NonNull; 244dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport android.annotation.Nullable; 254dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport android.view.View; 264dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen 274dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport static com.android.layoutlib.bridge.util.ReflectionUtils.getMethod; 284dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport static com.android.layoutlib.bridge.util.ReflectionUtils.invoke; 294dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen 304dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen/** 314dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Utility class for working with the design support lib. 324dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen */ 334dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenpublic class DesignLibUtil { 344dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen 354dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen private static final String PKG_PREFIX = "android.support.design.widget."; 364dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen public static final String CN_COORDINATOR_LAYOUT = PKG_PREFIX + "CoordinatorLayout"; 374dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen public static final String CN_APPBAR_LAYOUT = PKG_PREFIX + "AppBarLayout"; 384dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen public static final String CN_COLLAPSING_TOOLBAR_LAYOUT = 394dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen PKG_PREFIX + "CollapsingToolbarLayout"; 404dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen public static final String CN_TOOLBAR = "android.support.v7.widget.Toolbar"; 414dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen public static final int SCROLL_AXIS_VERTICAL = 1 << 1; 424dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen 434dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen /** 444dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Tries to set the title of a view. This is used to set the title in a 454dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * CollapsingToolbarLayout. 464dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * <p/> 474dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Any exceptions thrown during the process are logged in {@link Bridge#getLog()} 484dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen */ 494dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen public static void setTitle(@NonNull View view, @Nullable String title) { 504dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen if (title == null) { 514dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen return; 524dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen } 534dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen try { 54671b7f9b99316f7224c1213d6923d449a2de9b62Deepanshu Gupta invoke(getMethod(view.getClass(), "setTitle", CharSequence.class), view, title); 554dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen } catch (ReflectionException e) { 564dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen Bridge.getLog().warning(LayoutLog.TAG_INFO, 574dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen "Error occurred while trying to set title.", e); 584dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen } 594dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen } 604dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen} 61