diff options
author | Adam Powell <adamp@google.com> | 2014-05-14 20:13:47 -0700 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2014-05-15 15:11:40 -0700 |
commit | 76d8f968059d27ef8500cabf7690c18552c22d5a (patch) | |
tree | 36b1a28231cbd4813e3973a0dfdf46164d08ae47 /core/java/android/widget/RtlSpacingHelper.java | |
parent | 0a3103e755218c1ee48c7d078892eb6b42cc2081 (diff) | |
download | frameworks_base-76d8f968059d27ef8500cabf7690c18552c22d5a.zip frameworks_base-76d8f968059d27ef8500cabf7690c18552c22d5a.tar.gz frameworks_base-76d8f968059d27ef8500cabf7690c18552c22d5a.tar.bz2 |
Add content insets to Toolbar
Content insets allow a Toolbar to define horizontal gridlines for the
start/end or left/right edges of major content (not counting the
navigation button or menu). This allows apps to align their layout
content above or below a Toolbar with the title and other contents of
the bar by using app-defined measurements.
Change-Id: Ibd7e0810bf81070eb5f59a42ad3257f35bc0156a
Diffstat (limited to 'core/java/android/widget/RtlSpacingHelper.java')
-rw-r--r-- | core/java/android/widget/RtlSpacingHelper.java | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/core/java/android/widget/RtlSpacingHelper.java b/core/java/android/widget/RtlSpacingHelper.java new file mode 100644 index 0000000..f6b116f --- /dev/null +++ b/core/java/android/widget/RtlSpacingHelper.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package android.widget; + +/** + * RtlSpacingHelper manages the relationship between left/right and start/end for views + * that need to maintain both absolute and relative settings for a form of spacing similar + * to view padding. + */ +class RtlSpacingHelper { + public static final int UNDEFINED = Integer.MIN_VALUE; + + private int mLeft = 0; + private int mRight = 0; + private int mStart = UNDEFINED; + private int mEnd = UNDEFINED; + private int mExplicitLeft = 0; + private int mExplicitRight = 0; + + private boolean mIsRtl = false; + private boolean mIsRelative = false; + + public int getLeft() { + return mLeft; + } + + public int getRight() { + return mRight; + } + + public int getStart() { + return mIsRtl ? mRight : mLeft; + } + + public int getEnd() { + return mIsRtl ? mLeft : mRight; + } + + public void setRelative(int start, int end) { + mStart = start; + mEnd = end; + mIsRelative = true; + if (mIsRtl) { + if (end != UNDEFINED) mLeft = end; + if (start != UNDEFINED) mRight = start; + } else { + if (start != UNDEFINED) mLeft = start; + if (end != UNDEFINED) mRight = end; + } + } + + public void setAbsolute(int left, int right) { + mIsRelative = false; + if (left != UNDEFINED) mLeft = mExplicitLeft = left; + if (right != UNDEFINED) mRight = mExplicitRight = right; + } + + public void setDirection(boolean isRtl) { + if (isRtl == mIsRtl) { + return; + } + mIsRtl = isRtl; + if (mIsRelative) { + if (isRtl) { + mLeft = mEnd != UNDEFINED ? mEnd : mExplicitLeft; + mRight = mStart != UNDEFINED ? mStart : mExplicitRight; + } else { + mLeft = mStart != UNDEFINED ? mStart : mExplicitLeft; + mRight = mEnd != UNDEFINED ? mEnd : mExplicitRight; + } + } else { + mLeft = mExplicitLeft; + mRight = mExplicitRight; + } + } +} |