You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
add android/widget/AbsoluteLayout from AOSP
This commit is contained in:
217
src/api-impl/android/widget/AbsoluteLayout.java
Normal file
217
src/api-impl/android/widget/AbsoluteLayout.java
Normal file
@@ -0,0 +1,217 @@
|
||||
/*
|
||||
* Copyright (C) 2006 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;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
/**
|
||||
* A layout that lets you specify exact locations (x/y coordinates) of its
|
||||
* children. Absolute layouts are less flexible and harder to maintain than
|
||||
* other types of layouts without absolute positioning.
|
||||
*
|
||||
* <p><strong>XML attributes</strong></p> <p> See {@link
|
||||
* android.R.styleable#ViewGroup ViewGroup Attributes}, {@link
|
||||
* android.R.styleable#View View Attributes}</p>
|
||||
*
|
||||
* @deprecated Use {@link android.widget.FrameLayout}, {@link android.widget.RelativeLayout}
|
||||
* or a custom layout instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public class AbsoluteLayout extends ViewGroup {
|
||||
public AbsoluteLayout(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public AbsoluteLayout(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public AbsoluteLayout(Context context, AttributeSet attrs,
|
||||
int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
int count = getChildCount();
|
||||
|
||||
int maxHeight = 0;
|
||||
int maxWidth = 0;
|
||||
|
||||
// Find out how big everyone wants to be
|
||||
measureChildren(widthMeasureSpec, heightMeasureSpec);
|
||||
|
||||
// Find rightmost and bottom-most child
|
||||
for (int i = 0; i < count; i++) {
|
||||
View child = getChildAt(i);
|
||||
if (child.getVisibility() != GONE) {
|
||||
int childRight;
|
||||
int childBottom;
|
||||
|
||||
AbsoluteLayout.LayoutParams lp = (AbsoluteLayout.LayoutParams)child.getLayoutParams();
|
||||
|
||||
childRight = lp.x + child.getMeasuredWidth();
|
||||
childBottom = lp.y + child.getMeasuredHeight();
|
||||
|
||||
maxWidth = Math.max(maxWidth, childRight);
|
||||
maxHeight = Math.max(maxHeight, childBottom);
|
||||
}
|
||||
}
|
||||
|
||||
// Account for padding too
|
||||
/* maxWidth += mPaddingLeft + mPaddingRight;
|
||||
maxHeight += mPaddingTop + mPaddingBottom;
|
||||
*/
|
||||
// Check against minimum height and width
|
||||
maxHeight = Math.max(maxHeight, getSuggestedMinimumHeight());
|
||||
maxWidth = Math.max(maxWidth, getSuggestedMinimumWidth());
|
||||
|
||||
setMeasuredDimension(resolveSizeAndState(maxWidth, widthMeasureSpec, 0),
|
||||
resolveSizeAndState(maxHeight, heightMeasureSpec, 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a set of layout parameters with a width of
|
||||
* {@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT},
|
||||
* a height of {@link android.view.ViewGroup.LayoutParams#WRAP_CONTENT}
|
||||
* and with the coordinates (0, 0).
|
||||
*/
|
||||
@Override
|
||||
protected ViewGroup.LayoutParams generateDefaultLayoutParams() {
|
||||
return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int l, int t,
|
||||
int r, int b) {
|
||||
int count = getChildCount();
|
||||
|
||||
for (int i = 0; i < count; i++) {
|
||||
View child = getChildAt(i);
|
||||
if (child.getVisibility() != GONE) {
|
||||
|
||||
AbsoluteLayout.LayoutParams lp =
|
||||
(AbsoluteLayout.LayoutParams)child.getLayoutParams();
|
||||
|
||||
int childLeft = /*mPaddingLeft +*/ lp.x;
|
||||
int childTop = /*mPaddingTop +*/ lp.y;
|
||||
child.layout(childLeft, childTop,
|
||||
childLeft + child.getMeasuredWidth(),
|
||||
childTop + child.getMeasuredHeight());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) {
|
||||
return new AbsoluteLayout.LayoutParams(getContext(), attrs);
|
||||
}
|
||||
|
||||
// Override to allow type-checking of LayoutParams.
|
||||
@Override
|
||||
protected boolean checkLayoutParams(ViewGroup.LayoutParams p) {
|
||||
return p instanceof AbsoluteLayout.LayoutParams;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
|
||||
//return new LayoutParams(p);
|
||||
return p;
|
||||
}
|
||||
|
||||
//@Override
|
||||
public boolean shouldDelayChildPressedState() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Per-child layout information associated with AbsoluteLayout.
|
||||
* See
|
||||
* {@link android.R.styleable#AbsoluteLayout_Layout Absolute Layout Attributes}
|
||||
* for a list of all child view attributes that this class supports.
|
||||
*/
|
||||
public static class LayoutParams extends ViewGroup.LayoutParams {
|
||||
/**
|
||||
* The horizontal, or X, location of the child within the view group.
|
||||
*/
|
||||
public int x;
|
||||
/**
|
||||
* The vertical, or Y, location of the child within the view group.
|
||||
*/
|
||||
public int y;
|
||||
|
||||
/**
|
||||
* Creates a new set of layout parameters with the specified width,
|
||||
* height and location.
|
||||
*
|
||||
* @param width the width, either {@link #MATCH_PARENT},
|
||||
{@link #WRAP_CONTENT} or a fixed size in pixels
|
||||
* @param height the height, either {@link #MATCH_PARENT},
|
||||
{@link #WRAP_CONTENT} or a fixed size in pixels
|
||||
* @param x the X location of the child
|
||||
* @param y the Y location of the child
|
||||
*/
|
||||
public LayoutParams(int width, int height, int x, int y) {
|
||||
super(width, height);
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new set of layout parameters. The values are extracted from
|
||||
* the supplied attributes set and context. The XML attributes mapped
|
||||
* to this set of layout parameters are:
|
||||
*
|
||||
* <ul>
|
||||
* <li><code>layout_x</code>: the X location of the child</li>
|
||||
* <li><code>layout_y</code>: the Y location of the child</li>
|
||||
* <li>All the XML attributes from
|
||||
* {@link android.view.ViewGroup.LayoutParams}</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param c the application environment
|
||||
* @param attrs the set of attributes from which to extract the layout
|
||||
* parameters values
|
||||
*/
|
||||
public LayoutParams(Context c, AttributeSet attrs) {
|
||||
super(c, attrs);
|
||||
TypedArray a = c.obtainStyledAttributes(attrs,
|
||||
com.android.internal.R.styleable.AbsoluteLayout_Layout);
|
||||
x = a.getDimensionPixelOffset(
|
||||
com.android.internal.R.styleable.AbsoluteLayout_Layout_layout_x, 0);
|
||||
y = a.getDimensionPixelOffset(
|
||||
com.android.internal.R.styleable.AbsoluteLayout_Layout_layout_y, 0);
|
||||
a.recycle();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
/*public LayoutParams(ViewGroup.LayoutParams source) {
|
||||
super(source);
|
||||
}*/
|
||||
|
||||
/*@Override
|
||||
public String debug(String output) {
|
||||
return output + "Absolute.LayoutParams={width=" + sizeToString(width) + ", height=" + sizeToString(height) + " x=" + x + " y=" + y + "}";
|
||||
}*/
|
||||
}
|
||||
}
|
||||
@@ -399,6 +399,7 @@ hax_jar = jar('hax', [
|
||||
'android/webkit/WebView.java',
|
||||
'android/webkit/WebViewClient.java',
|
||||
'android/widget/AbsListView.java',
|
||||
'android/widget/AbsoluteLayout.java',
|
||||
'android/widget/AbsSeekBar.java',
|
||||
'android/widget/AbsSpinner.java',
|
||||
'android/widget/Adapter.java',
|
||||
|
||||
Reference in New Issue
Block a user