1b86a6c2c71514e0cb693597a955e224811b90f96Dake Gu// CHECKSTYLE:OFF Generated code 2b86a6c2c71514e0cb693597a955e224811b90f96Dake Gu/* This file is auto-generated from ErrorSupportFragment.java. DO NOT MODIFY. */ 3b86a6c2c71514e0cb693597a955e224811b90f96Dake Gu 4b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout/* 5b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Copyright (C) 2014 The Android Open Source Project 6b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * 7b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 8b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * in compliance with the License. You may obtain a copy of the License at 9b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * 10b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * http://www.apache.org/licenses/LICENSE-2.0 11b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * 12b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Unless required by applicable law or agreed to in writing, software distributed under the License 13b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 14b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * or implied. See the License for the specific language governing permissions and limitations under 15b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * the License. 16b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.leanback.app; 18b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 193103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.graphics.Paint; 203103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.graphics.Paint.FontMetricsInt; 213103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.graphics.PixelFormat; 223103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.graphics.drawable.Drawable; 23b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stoutimport android.os.Bundle; 24b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stoutimport android.text.TextUtils; 25b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stoutimport android.view.LayoutInflater; 26b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stoutimport android.view.View; 27b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stoutimport android.view.ViewGroup; 28b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stoutimport android.widget.Button; 29b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stoutimport android.widget.ImageView; 30b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stoutimport android.widget.TextView; 31b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 328619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport androidx.leanback.R; 338619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikas 34b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout/** 35b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * A fragment for displaying an error indication. 369870cf8fc2cbe52e761b850f58d5ac26db26a4c8Dake Gu * @deprecated use {@link ErrorSupportFragment} 37b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 389870cf8fc2cbe52e761b850f58d5ac26db26a4c8Dake Gu@Deprecated 39a373804d10f93a9488adc35cf6ce44dce09b3778Dake Gupublic class ErrorFragment extends BrandedFragment { 40b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 41a373804d10f93a9488adc35cf6ce44dce09b3778Dake Gu private ViewGroup mErrorFrame; 42b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private ImageView mImageView; 43b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private TextView mTextView; 44b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private Button mButton; 45b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private Drawable mDrawable; 46b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private CharSequence mMessage; 47b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private String mButtonText; 48b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private View.OnClickListener mButtonClickListener; 49b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private Drawable mBackgroundDrawable; 50b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private boolean mIsBackgroundTranslucent = true; 51b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 52b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 53b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Sets the default background. 54b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * 55b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * @param translucent True to set a translucent background. 56b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 57b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public void setDefaultBackground(boolean translucent) { 58b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mBackgroundDrawable = null; 59b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mIsBackgroundTranslucent = translucent; 60b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateBackground(); 61b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateMessage(); 62b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 63b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 64b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 65b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Returns true if the background is translucent. 66b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 67b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public boolean isBackgroundTranslucent() { 68b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout return mIsBackgroundTranslucent; 69b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 70b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 71b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 72b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Sets a drawable for the fragment background. 73b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * 74b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * @param drawable The drawable used for the background. 75b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 76b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public void setBackgroundDrawable(Drawable drawable) { 77b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mBackgroundDrawable = drawable; 78b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout if (drawable != null) { 79b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout final int opacity = drawable.getOpacity(); 803103f63e99d47573823957f7aa34308555873221Aurimas Liutikas mIsBackgroundTranslucent = (opacity == PixelFormat.TRANSLUCENT 813103f63e99d47573823957f7aa34308555873221Aurimas Liutikas || opacity == PixelFormat.TRANSPARENT); 82b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 83b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateBackground(); 84b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateMessage(); 85b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 86b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 87b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 88b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Returns the background drawable. May be null if a default is used. 89b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 90b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public Drawable getBackgroundDrawable() { 91b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout return mBackgroundDrawable; 92b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 93b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 94b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 95b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Sets the drawable to be used for the error image. 96b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * 97b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * @param drawable The drawable used for the error image. 98b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 99b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public void setImageDrawable(Drawable drawable) { 100b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mDrawable = drawable; 101b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateImageDrawable(); 102b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 103b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 104b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 105b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Returns the drawable used for the error image. 106b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 107b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public Drawable getImageDrawable() { 108b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout return mDrawable; 109b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 110b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 111b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 112b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Sets the error message. 113b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * 114b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * @param message The error message. 115b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 116b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public void setMessage(CharSequence message) { 117b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mMessage = message; 118b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateMessage(); 119b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 120b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 121b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 122b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Returns the error message. 123b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 124b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public CharSequence getMessage() { 125b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout return mMessage; 126b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 127b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 128b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 129b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Sets the button text. 130b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * 131b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * @param text The button text. 132b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 133b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public void setButtonText(String text) { 134b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mButtonText = text; 135b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateButton(); 136b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 137b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 138b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 139b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Returns the button text. 140b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 141b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public String getButtonText() { 142b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout return mButtonText; 143b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 144b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 145b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 146b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Set the button click listener. 147b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * 148b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * @param clickListener The click listener for the button. 149b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 150b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public void setButtonClickListener(View.OnClickListener clickListener) { 151b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mButtonClickListener = clickListener; 152b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateButton(); 153b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 154b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 155b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout /** 156b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout * Returns the button click listener. 157b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout */ 158b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public View.OnClickListener getButtonClickListener() { 159b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout return mButtonClickListener; 160b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 161b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 162b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout @Override 163b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public View onCreateView(LayoutInflater inflater, ViewGroup container, 164b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout Bundle savedInstanceState) { 165b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout View root = inflater.inflate(R.layout.lb_error_fragment, container, false); 166b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 167a373804d10f93a9488adc35cf6ce44dce09b3778Dake Gu mErrorFrame = (ViewGroup) root.findViewById(R.id.error_frame); 168b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateBackground(); 169b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 170a373804d10f93a9488adc35cf6ce44dce09b3778Dake Gu installTitleView(inflater, mErrorFrame, savedInstanceState); 171a373804d10f93a9488adc35cf6ce44dce09b3778Dake Gu 172b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mImageView = (ImageView) root.findViewById(R.id.image); 173b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateImageDrawable(); 174b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 175b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mTextView = (TextView) root.findViewById(R.id.message); 176b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateMessage(); 177b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 178b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mButton = (Button) root.findViewById(R.id.button); 179b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout updateButton(); 180b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 181b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout FontMetricsInt metrics = getFontMetricsInt(mTextView); 182b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout int underImageBaselineMargin = container.getResources().getDimensionPixelSize( 183b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout R.dimen.lb_error_under_image_baseline_margin); 184b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout setTopMargin(mTextView, underImageBaselineMargin + metrics.ascent); 185b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 186b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout int underMessageBaselineMargin = container.getResources().getDimensionPixelSize( 187b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout R.dimen.lb_error_under_message_baseline_margin); 188b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout setTopMargin(mButton, underMessageBaselineMargin - metrics.descent); 189b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 190b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout return root; 191b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 192b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 193b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private void updateBackground() { 194b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout if (mErrorFrame != null) { 195b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout if (mBackgroundDrawable != null) { 196b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mErrorFrame.setBackground(mBackgroundDrawable); 197b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } else { 198b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mErrorFrame.setBackgroundColor(mErrorFrame.getResources().getColor( 1993103f63e99d47573823957f7aa34308555873221Aurimas Liutikas mIsBackgroundTranslucent 2003103f63e99d47573823957f7aa34308555873221Aurimas Liutikas ? R.color.lb_error_background_color_translucent 2013103f63e99d47573823957f7aa34308555873221Aurimas Liutikas : R.color.lb_error_background_color_opaque)); 202b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 203b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 204b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 205b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 206b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private void updateMessage() { 207b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout if (mTextView != null) { 208b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mTextView.setText(mMessage); 209b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mTextView.setVisibility(TextUtils.isEmpty(mMessage) ? View.GONE : View.VISIBLE); 210b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 211b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 212b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 213b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private void updateImageDrawable() { 214b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout if (mImageView != null) { 215b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mImageView.setImageDrawable(mDrawable); 216b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mImageView.setVisibility(mDrawable == null ? View.GONE : View.VISIBLE); 217b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 218b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 219b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 220b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private void updateButton() { 221b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout if (mButton != null) { 222b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mButton.setText(mButtonText); 223b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mButton.setOnClickListener(mButtonClickListener); 224b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mButton.setVisibility(TextUtils.isEmpty(mButtonText) ? View.GONE : View.VISIBLE); 225b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mButton.requestFocus(); 226b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 227b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 228b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 229b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout @Override 230b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout public void onStart() { 231b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout super.onStart(); 232b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout mErrorFrame.requestFocus(); 233b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 234b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 235b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private static FontMetricsInt getFontMetricsInt(TextView textView) { 236b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 237b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout paint.setTextSize(textView.getTextSize()); 238b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout paint.setTypeface(textView.getTypeface()); 239b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout return paint.getFontMetricsInt(); 240b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 241b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout 242b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout private static void setTopMargin(TextView textView, int topMargin) { 243b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) textView.getLayoutParams(); 244b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout lp.topMargin = topMargin; 245b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout textView.setLayoutParams(lp); 246b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout } 247a373804d10f93a9488adc35cf6ce44dce09b3778Dake Gu 248b7c2e023ab13ac158badfc9f4e17fd33fd6bf274Craig Stout} 249