下面列出了android.view.ViewGroup#getLayoutParams ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void initView() {
LayoutInflater inflater = getLayoutInflater();
mListContainer = (HorizontalScrollViewEx) findViewById(R.id.container);
final int screenWidth = MyUtils.getScreenMetrics(this).widthPixels;
final int screenHeight = MyUtils.getScreenMetrics(this).heightPixels;
for (int i = 0; i < 1; i++) {
ViewGroup layout = (ViewGroup) inflater.inflate(
R.layout.content_layout, mListContainer, false);
layout.getLayoutParams().width = screenWidth;
TextView textView = (TextView) layout.findViewById(R.id.title);
textView.setText("page " + (i + 1));
layout.setBackgroundColor(Color.rgb(255 / (i + 1), 255 / (i + 1), 0));
createList(layout);
mListContainer.addView(layout);
}
}
public void attachToActivity(Activity activity) {
mActivity = activity;
TypedArray a = activity.getTheme().obtainStyledAttributes(new int[]{
android.R.attr.windowBackground
});
int background = a.getResourceId(0, 0);
a.recycle();
ViewGroup decor = (ViewGroup) activity.getWindow().getDecorView();
ViewGroup decorChild = (ViewGroup) decor.getChildAt(0);
decorChild.setBackgroundResource(background);
LayoutParams p = (LayoutParams) decorChild.getLayoutParams();
FrameLayout newRoot = new FrameLayout(getContext());
decor.removeView(decorChild);
newRoot.addView(decorChild, p);
p = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
addView(newRoot, p);
setContentView(newRoot);
setLayoutParams(p);
decor.addView(this, p);
}
@TargetApi(19)
private void showFloatingFrameButton(View layout) {
boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
boolean shouldHideFloatingFrame = false;
ViewGroup frame = layout.findViewById(R.id.NL_frame);
View floatingFrame = layout.findViewById(R.id.floating_frame);
floatingFrame.setVisibility(nlEnabled && !shouldHideFloatingFrame ? View.VISIBLE : isLandscape ? View.GONE : View.INVISIBLE);
if (frame != null) {
frame.setVisibility(isLandscape && nlEnabled ? View.INVISIBLE : View.VISIBLE);
RelativeLayout.LayoutParams frameParams = (RelativeLayout.LayoutParams) frame.getLayoutParams();
frameParams.removeRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
frameParams.setMargins(frameParams.leftMargin, frameParams.topMargin, frameParams.rightMargin, 0);
frameParams.removeRule(RelativeLayout.CENTER_VERTICAL);
frame.setLayoutParams(frameParams);
}
}
private static void removeContainerView(ViewGroup tipsContainerView, View targetView) {
ViewGroup parent = (ViewGroup) tipsContainerView.getParent();
ViewGroup.LayoutParams targetParams = tipsContainerView.getLayoutParams();
int index = parent.indexOfChild(tipsContainerView);
parent.removeViewAt(index);
if (targetView.getParent() != null) {
((ViewGroup) targetView.getParent()).removeView(targetView);
}
parent.addView(targetView, index, targetParams);
}
/**
* Configure navigation drawer for the persistent mode.
*/
private void configureDrawer() {
if (isPersistentDrawer()) {
mDrawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
mDrawer.setScrimColor(Color.TRANSPARENT);
mDrawerToggle.setDrawerIndicatorEnabled(false);
ViewGroup frame = findViewById(R.id.ads_activity_root);
if (frame != null && frame.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams params =
(ViewGroup.MarginLayoutParams) frame.getLayoutParams();
if (DynamicLocaleUtils.isLayoutRtl()) {
params.rightMargin = getResources().getDimensionPixelOffset(
R.dimen.ads_margin_content_start);
} else {
params.leftMargin = getResources().getDimensionPixelOffset(
R.dimen.ads_margin_content_start);
}
frame.setLayoutParams(params);
}
} else {
if (isDrawerLocked()) {
mDrawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
getContentView().post(new Runnable() {
@Override
public void run() {
mDrawer.closeDrawers();
}
});
}
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mIsOnce) {
mWapper = (LinearLayout) getChildAt(0);
mMenuViewGroup = (ViewGroup) mWapper.getChildAt(0);
mContentViewGroup = (ViewGroup) mWapper.getChildAt(1);
mMenuWidth = mMenuViewGroup.getLayoutParams().width = mScreenWidth - mMenuRightPadding;
mContentViewGroup.getLayoutParams().width = mScreenWidth;
mIsOnce = false;
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
/**
* 显示视图
* 如果stateView为null,则需要创建
*
* @return
*/
public static boolean showStater(Context context, ViewGroup overallView, IState stater) {
if (stater == null || overallView ==null) {
return false;
}
View staterView = stater.getView();
if (staterView == null) {
stater.onStateCreate(context, overallView);
staterView = stater.getView();
if (staterView == null) {
return false;
}
}
ViewGroup.LayoutParams layoutParams = overallView.getLayoutParams();
if (layoutParams == null) {
layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
}
layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
if (overallView.indexOfChild(staterView) < 0 && staterView.getParent() == null) {
overallView.addView(staterView, layoutParams);
}
stater.getView().setVisibility(View.VISIBLE);
stater.onStateResume();
return true;
}
/**
* Same as previous, but with given size in case subTreeRoot itself has layout_width or layout_height = "wrap_content"
*/
private static void wrapContentAgain(ViewGroup subTreeRoot, boolean relayoutAllNodes,
int subTreeRootWidthMeasureSpec, int subTreeRootHeightMeasureSpec)
{
assert( "main".equals( Thread.currentThread().getName() ) );
if(subTreeRoot == null)
return;
LayoutParams layoutParams = subTreeRoot.getLayoutParams();
// --- First, we force measure on the subTree
int widthMeasureSpec = subTreeRootWidthMeasureSpec;
// When LayoutParams.MATCH_PARENT and Width > 0, we apply measured width to avoid getting dimensions too big
if( layoutParams.width != LayoutParams.WRAP_CONTENT && subTreeRoot.getWidth() > 0 )
widthMeasureSpec = MeasureSpec.makeMeasureSpec( subTreeRoot.getWidth(), MeasureSpec.EXACTLY );
int heightMeasureSpec = subTreeRootHeightMeasureSpec;
// When LayoutParams.MATCH_PARENT and Height > 0, we apply measured height to avoid getting dimensions too big
if( layoutParams.height != LayoutParams.WRAP_CONTENT && subTreeRoot.getHeight() > 0 )
heightMeasureSpec = MeasureSpec.makeMeasureSpec( subTreeRoot.getHeight(), MeasureSpec.EXACTLY );
// This measure recursively the whole sub-tree
subTreeRoot.measure( widthMeasureSpec, heightMeasureSpec );
// --- Then recurse on all children to correct the sizes
recurseWrapContent( subTreeRoot, relayoutAllNodes );
// --- RequestLayout to finish properly
subTreeRoot.requestLayout();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(final ViewGroup viewGroup) {
viewGroup.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
final FrameLayout frameLayout = new FrameLayout(viewGroup.getContext());
return new RecyclerView.ViewHolder(frameLayout) {};
}
/**
* Same as previous, but with given size in case subTreeRoot itself has layout_width or layout_height = "wrap_content"
*/
public static void wrapContentAgain( ViewGroup subTreeRoot, boolean relayoutAllNodes,
int subTreeRootWidthMeasureSpec, int subTreeRootHeightMeasureSpec )
{
Log.d(TAG, "+++ LayoutWrapContentUpdater wrapContentAgain on subTreeRoot=["+ subTreeRoot +"], with w="
+ subTreeRootWidthMeasureSpec +" and h="+ subTreeRootHeightMeasureSpec );
assert( "main".equals( Thread.currentThread().getName() ) );
if (subTreeRoot == null)
return;
LayoutParams layoutParams = subTreeRoot.getLayoutParams();
// --- First, we force measure on the subTree
int widthMeasureSpec = subTreeRootWidthMeasureSpec;
// When LayoutParams.MATCH_PARENT and Width > 0, we apply measured width to avoid getting dimensions too big
if ( layoutParams.width != LayoutParams.WRAP_CONTENT && subTreeRoot.getWidth() > 0 )
widthMeasureSpec = MeasureSpec.makeMeasureSpec( subTreeRoot.getWidth(), MeasureSpec.EXACTLY );
int heightMeasureSpec = subTreeRootHeightMeasureSpec;
// When LayoutParams.MATCH_PARENT and Height > 0, we apply measured height to avoid getting dimensions too big
if ( layoutParams.height != LayoutParams.WRAP_CONTENT && subTreeRoot.getHeight() > 0 )
heightMeasureSpec = MeasureSpec.makeMeasureSpec( subTreeRoot.getHeight(), MeasureSpec.EXACTLY );
// This measure recursively the whole sub-tree
subTreeRoot.measure( widthMeasureSpec, heightMeasureSpec );
// --- Then recurse on all children to correct the sizes
recurseWrapContent( subTreeRoot, relayoutAllNodes );
// --- RequestLayout to finish properly
subTreeRoot.requestLayout();
return;
}
private void resetForContainer(ViewGroup aContainer, View aChild) {
if (aContainer.getChildAt(0).getTag() == null) return;
aContainer.removeViewAt(0);
aContainer.addView(aChild, 0, aChild.getLayoutParams());
aContainer.getLayoutParams().height = LayoutParams.WRAP_CONTENT;
aContainer.requestLayout();
}
public void remove() {
if (getParent() == null || _labelViewContainerID == -1) {
return;
}
ViewGroup frameContainer = (ViewGroup) getParent();
assert (frameContainer.getChildCount() == 2);
View target = frameContainer.getChildAt(0);
ViewGroup parentContainer = (ViewGroup) frameContainer.getParent();
int groupIndex = parentContainer.indexOfChild(frameContainer);
if (frameContainer.getParent() instanceof RelativeLayout) {
for (int i = 0; i < parentContainer.getChildCount(); i++) {
if (i == groupIndex) {
continue;
}
View view = parentContainer.getChildAt(i);
RelativeLayout.LayoutParams para = (RelativeLayout.LayoutParams) view.getLayoutParams();
for (int j = 0; j < para.getRules().length; j++) {
if (para.getRules()[j] == _labelViewContainerID) {
para.getRules()[j] = target.getId();
}
}
view.setLayoutParams(para);
}
}
ViewGroup.LayoutParams frameLayoutParam = frameContainer.getLayoutParams();
target.setLayoutParams(frameLayoutParam);
parentContainer.removeViewAt(groupIndex);
frameContainer.removeView(target);
frameContainer.removeView(this);
parentContainer.addView(target,groupIndex);
_labelViewContainerID = -1;
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
//add @layout/material_view_pager_layout as child, containing all the MaterialViewPager views
addView(LayoutInflater.from(getContext()).inflate(R.layout.material_view_pager_layout, this, false));
headerBackgroundContainer = (ViewGroup) findViewById(R.id.headerBackgroundContainer);
pagerTitleStripContainer = (ViewGroup) findViewById(R.id.pagerTitleStripContainer);
viewpagerContainer = (ViewGroup) findViewById(R.id.viewpager_layout);
logoContainer = (ViewGroup) findViewById(R.id.logoContainer);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
if (settings.disableToolbar) {
mToolbar.setVisibility(INVISIBLE);
}
{ //replace the viewpager ?
int viewPagerLayoutId = settings.viewpagerId;
if (viewPagerLayoutId != -1) {
viewpagerContainer.removeAllViews();
viewpagerContainer.addView(LayoutInflater.from(getContext()).inflate(viewPagerLayoutId, viewpagerContainer, false));
}
}
mViewPager = (ViewPager) findViewById(R.id.materialviewpager_viewpager);
mViewPager.addOnPageChangeListener(this);
//inflate subviews defined in attributes
{
int headerId = settings.headerLayoutId;
if (headerId == -1) {
if (settings.animatedHeaderImage) {
headerId = R.layout.material_view_pager_moving_header;
} else {
headerId = R.layout.material_view_pager_imageview_header;
}
}
headerBackgroundContainer.addView(LayoutInflater.from(getContext()).inflate(headerId, headerBackgroundContainer, false));
}
if (isInEditMode()) { //preview titlestrip
//add fake tabs on edit mode
settings.pagerTitleStripId = R.layout.tools_material_view_pager_pagertitlestrip;
}
if (settings.pagerTitleStripId != -1) {
pagerTitleStripContainer.addView(LayoutInflater.from(getContext()).inflate(settings.pagerTitleStripId, pagerTitleStripContainer, false));
}
if (settings.logoLayoutId != -1) {
logoContainer.addView(LayoutInflater.from(getContext()).inflate(settings.logoLayoutId, logoContainer, false));
if (settings.logoMarginTop != 0) {
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) logoContainer.getLayoutParams();
layoutParams.setMargins(0, settings.logoMarginTop, 0, 0);
logoContainer.setLayoutParams(layoutParams);
}
}
headerBackground = findViewById(R.id.headerBackground);
toolbarLayoutBackground = findViewById(R.id.toolbar_layout_background);
initialiseHeights();
//construct the materialViewPagerHeader with subviews
if (!isInEditMode()) {
materialViewPagerHeader = MaterialViewPagerHeader
.withToolbar(mToolbar)
.withToolbarLayoutBackground(toolbarLayoutBackground)
.withPagerSlidingTabStrip(pagerTitleStripContainer)
.withHeaderBackground(headerBackground)
.withStatusBackground(findViewById(R.id.statusBackground))
.withLogo(logoContainer);
//and construct the MaterialViewPagerAnimator
//attach it to the activity to enable MaterialViewPagerHeaderView.setMaterialHeight();
MaterialViewPagerHelper.register(getContext(), new MaterialViewPagerAnimator(this));
} else {
//if in edit mode, add fake cardsviews
View sample = LayoutInflater.from(getContext()).inflate(R.layout.tools_list_items, pagerTitleStripContainer, false);
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) sample.getLayoutParams();
int marginTop = Math.round(Utils.dpToPx(settings.headerHeight + 10, getContext()));
params.setMargins(0, marginTop, 0, 0);
super.setLayoutParams(params);
addView(sample);
}
}
/**
* @param manager The fullscreen manager that should be notified of changes to this tab (if
* set to null, no more updates will come from this tab).
*/
public void setFullscreenManager(FullscreenManager manager) {
mFullscreenManager = manager;
if (mFullscreenManager != null) {
boolean topOffsetsInitialized = !Float.isNaN(mPreviousTopControlsOffsetY)
&& !Float.isNaN(mPreviousContentOffsetY);
boolean bottomOffsetsInitialized =
!Float.isNaN(mPreviousBottomControlsOffsetY);
boolean isChromeHomeEnabled = FeatureUtilities.isChromeHomeEnabled();
// Make sure the dominant control offsets have been set.
if ((!topOffsetsInitialized && !isChromeHomeEnabled)
|| (!bottomOffsetsInitialized && isChromeHomeEnabled)) {
mFullscreenManager.setPositionsForTabToNonFullscreen();
} else {
mFullscreenManager.setPositionsForTab(mPreviousTopControlsOffsetY,
mPreviousBottomControlsOffsetY,
mPreviousContentOffsetY);
}
updateFullscreenEnabledState();
}
// For blimp mode, offset the blimp view by the height of browser controls. This will ensure
// that the view doesn't get clipped at the bottom of the page and also the touch offsets
// would work correctly.
if (getBlimpContents() != null && mFullscreenManager != null) {
ViewGroup blimpView = getBlimpContents().getView();
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) blimpView.getLayoutParams();
if (lp == null) {
lp = new FrameLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
}
lp.topMargin = mFullscreenManager.getTopControlsHeight();
blimpView.setLayoutParams(lp);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(resourceId);
try {
ViewGroup root = (ViewGroup) findViewById(R.id.easy_alert_dialog_layout);
if (root != null) {
ViewGroup.LayoutParams params = root.getLayoutParams();
params.width = (int) ScreenUtil.getDialogWidth();
root.setLayoutParams(params);
}
titleView = findViewById(R.id.easy_dialog_title_view);
if (titleView != null) {
setTitleVisible(isTitleVisible);
}
titleBtn = (ImageButton) findViewById(R.id.easy_dialog_title_button);
if (titleBtn != null) {
setTitleBtnVisible(isTitleBtnVisible);
}
titleTV = (TextView) findViewById(R.id.easy_dialog_title_text_view);
if (titleTV != null) {
titleTV.setText(title);
if (NO_TEXT_COLOR != titleTextColor)
titleTV.setTextColor(titleTextColor);
if (NO_TEXT_SIZE != titleTextSize)
titleTV.setTextSize(titleTextSize);
}
messageTV = (TextView) findViewById(R.id.easy_dialog_message_text_view);
if (messageTV != null) {
messageTV.setText(message);
setMessageVisible(isMessageVisble);
if (NO_TEXT_COLOR != msgTextColor)
messageTV.setTextColor(msgTextColor);
if (NO_TEXT_SIZE != msgTextSize)
messageTV.setTextSize(msgTextSize);
}
message2TV = (TextView) findViewById(R.id.easy_dialog_message_2);
if (message2TV != null && !TextUtils.isEmpty(message2)) {
message2TV.setVisibility(View.VISIBLE);
message2TV.setText(message2);
}
positiveBtn = (Button) findViewById(R.id.easy_dialog_positive_btn);
if (isPositiveBtnVisible && positiveBtn != null) {
positiveBtn.setVisibility(View.VISIBLE);
if (NO_TEXT_COLOR != positiveBtnTitleTextColor) {
positiveBtn.setTextColor(positiveBtnTitleTextColor);
}
if (NO_TEXT_SIZE != positiveBtnTitleTextSize) {
positiveBtn.setTextSize(positiveBtnTitleTextSize);
}
positiveBtn.setText(positiveBtnTitle);
positiveBtn.setOnClickListener(positiveBtnListener);
}
negativeBtn = (Button) findViewById(R.id.easy_dialog_negative_btn);
btnDivideView = findViewById(R.id.easy_dialog_btn_divide_view);
if (isNegativeBtnVisible) {
negativeBtn.setVisibility(View.VISIBLE);
btnDivideView.setVisibility(View.VISIBLE);
if (NO_TEXT_COLOR != this.negativeBtnTitleTextColor) {
negativeBtn.setTextColor(negativeBtnTitleTextColor);
}
if (NO_TEXT_SIZE != this.negativeBtnTitleTextSize) {
negativeBtn.setTextSize(negativeBtnTitleTextSize);
}
negativeBtn.setText(negativeBtnTitle);
negativeBtn.setOnClickListener(negativeBtnListener);
}
if (mViewListener != null && mViewListener.size() != 0) {
Iterator iter = mViewListener.entrySet().iterator();
View view = null;
while (iter.hasNext()) {
Map.Entry<Integer, View.OnClickListener> entry = (Map.Entry) iter.next();
view = findViewById(entry.getKey());
if (view != null && entry.getValue() != null) {
view.setOnClickListener(entry.getValue());
}
}
}
} catch (Exception e) {
}
}
/**
* 测量宽高(只有一方数值确定,另一方为WRAP_CONTENT才需要测量,用于保持纵横比)
* @param vg ViewGroup
* @param widthMeasureSpec 宽度
* @param heightMeasureSpec 高度
* @return 测量好的宽高
*/
public int[] onMeasure(ViewGroup vg, int widthMeasureSpec, int heightMeasureSpec) {
int measureSpecs[] = new int[2];
measureSpecs[0] = widthMeasureSpec;
measureSpecs[1] = heightMeasureSpec;
if (!mAutoScaleEnable)
return measureSpecs;
int widthMode = View.MeasureSpec.getMode(widthMeasureSpec);
int heightMode = View.MeasureSpec.getMode(heightMeasureSpec);
int width = View.MeasureSpec.getSize(widthMeasureSpec);
int height = View.MeasureSpec.getSize(heightMeasureSpec);
ViewGroup.LayoutParams params = vg.getLayoutParams();
// 已知宽度
boolean bScalingWidth = widthMode == View.MeasureSpec.EXACTLY && ViewGroup.LayoutParams.MATCH_PARENT == params.width;
// 已知高度
boolean bScalingHeight = heightMode == View.MeasureSpec.EXACTLY && ViewGroup.LayoutParams.MATCH_PARENT == params.height;
if (bScalingHeight && bScalingWidth && TYPE_FIT_INSIDE == mScaleType){
scaleSize(vg, width, height, TYPE_FIT_INSIDE);
}
else if (bScalingHeight && TYPE_FIT_HEIGHT == mScaleType){
scaleSize(vg, width, height, TYPE_FIT_HEIGHT);
}
else if (bScalingWidth && TYPE_FIT_WIDTH == mScaleType){
scaleSize(vg, width, height, TYPE_FIT_WIDTH);
}
if (0 == mDesignWidth || 0 == mDesignHeight)
return measureSpecs;
if ( TYPE_FIT_INSIDE != mScaleType)
return measureSpecs;
if (widthMode != View.MeasureSpec.EXACTLY
&& heightMode == View.MeasureSpec.EXACTLY
&& ViewGroup.LayoutParams.WRAP_CONTENT == params.width) {
// 高度为match_parent或具体值,宽度wrap_content
width = (height * mDesignWidth / mDesignHeight);
measureSpecs[0] = View.MeasureSpec.makeMeasureSpec(width,
View.MeasureSpec.EXACTLY);
}else if (widthMode == View.MeasureSpec.EXACTLY
&& heightMode != View.MeasureSpec.EXACTLY
&& ViewGroup.LayoutParams.WRAP_CONTENT == params.height) {
// 宽度为match_parent或具体值,高度为wrap_content
height = (width * mDesignHeight / mDesignWidth);
measureSpecs[1] = View.MeasureSpec.makeMeasureSpec(height,
View.MeasureSpec.EXACTLY);
}
return measureSpecs;
}
private void setupCustomContent(ViewGroup customPanel) {
final View customView;
if (mView != null) {
customView = mView;
} else if (mViewLayoutResId != 0) {
final LayoutInflater inflater = LayoutInflater.from(mContext);
customView = inflater.inflate(mViewLayoutResId, customPanel, false);
} else {
customView = null;
}
if (customView != null && mViewRoot == null) {
if (mViewRootId != 0) {
mViewRoot = customView.findViewById(mViewRootId);
if (mViewRoot == null) {
throw new NullPointerException("Unable to find root view for the supplied id "
+ mViewRootId + ".");
}
}
}
final boolean hasCustomView = customView != null;
if (!hasCustomView || !canTextInput(customView)) {
mWindow.setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
}
if (hasCustomView) {
final FrameLayout custom = mWindow.findViewById(R.id.custom);
custom.addView(customView, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));
if (mViewSpacingSpecified) {
custom.setPadding(
mViewSpacingLeft, mViewSpacingTop, mViewSpacingRight, mViewSpacingBottom);
}
if (mListView != null) {
((LinearLayout.LayoutParams) customPanel.getLayoutParams()).weight = 0;
}
} else {
customPanel.setVisibility(View.GONE);
}
}
@Override
public void onViewCreated(Activity activity, View headerView) {
// Get ProgressBar and TextView. Also set initial text on TextView
mHeaderProgressBar = (ProgressBar) headerView.findViewById(R.id.ptr_progress);
mHeaderTextView = (TextView) headerView.findViewById(R.id.ptr_text);
// Apply any custom ProgressBar colors
applyProgressBarColor();
// Labels to display
mPullRefreshLabel = activity.getString(R.string.pull_to_refresh_pull_label);
mRefreshingLabel = activity.getString(R.string.pull_to_refresh_refreshing_label);
mReleaseLabel = activity.getString(R.string.pull_to_refresh_release_label);
// Retrieve the Action Bar size from the Activity's theme
mContentLayout = (ViewGroup) headerView.findViewById(R.id.ptr_content);
if (mContentLayout != null) {
mContentLayout.getLayoutParams().height = getActionBarSize(activity);
mContentLayout.requestLayout();
}
// Retrieve the Action Bar background from the Activity's theme (see #93).
Drawable abBg = getActionBarBackground(activity);
if (abBg != null) {
// If we do not have a opaque background we just display a solid solid behind it
if (abBg.getOpacity() != PixelFormat.OPAQUE) {
View view = headerView.findViewById(R.id.ptr_text_opaque_bg);
if (view != null) {
view.setVisibility(View.VISIBLE);
}
}
mHeaderTextView.setBackgroundDrawable(abBg);
}
// Retrieve the Action Bar Title Style from the Action Bar's theme
Context abContext = headerView.getContext();
final int titleTextStyle = getActionBarTitleStyle(abContext);
if (titleTextStyle != 0) {
mHeaderTextView.setTextAppearance(abContext, titleTextStyle);
}
// Call onReset to make sure that the View is consistent
onReset();
}
@CallSuper
protected void updateLayoutForReceive(VH holder) {
ViewGroup frameLayout = (ViewGroup) holder.itemView.findViewById(R.id.mainContainer);
ImageView imgTick = (ImageView) holder.itemView.findViewById(R.id.cslr_txt_tic);
TextView messageText = (TextView) holder.itemView.findViewById(R.id.messageSenderTextMessage);
LinearLayout root = (LinearLayout) holder.itemView.findViewById(R.id.contentContainer);
LinearLayout timeLayout = (LinearLayout) root.getParent();
timeLayout.setGravity(Gravity.LEFT);
if (messageText != null) {
messageText.setTextColor(Color.parseColor(G.textBubble));
}
// ProtoGlobal.RoomMessageType messageType = mMessage.forwardedFrom == null ? mMessage.messageType : mMessage.forwardedFrom.getMessageType();
if (G.isDarkTheme) {
setTextColor(imgTick, R.color.white);
} else {
setTextColor(imgTick, R.color.colorOldBlack);
}
((FrameLayout.LayoutParams) frameLayout.getLayoutParams()).gravity = Gravity.LEFT;
((LinearLayout.LayoutParams) root.getLayoutParams()).gravity = Gravity.LEFT;
if (G.isDarkTheme) {
((View) (holder.itemView.findViewById(R.id.contentContainer)).getParent()).setBackgroundResource(R.drawable.rectangel_white_round_dark);
} else {
((View) (holder.itemView.findViewById(R.id.contentContainer)).getParent()).setBackgroundResource(R.drawable.rectangel_white_round);
}
/**
* add main layout margin to prevent getting match parent completely
* set to mainContainer not itemView because of selecting item foreground
*/
GradientDrawable circleDarkColor = (GradientDrawable) ((View) root.getParent()).getBackground();
circleDarkColor.setColor(Color.parseColor(G.bubbleChatReceive));
((FrameLayout.LayoutParams) frameLayout.getLayoutParams()).leftMargin = (int) holder.itemView.getContext().getResources().getDimension(R.dimen.dp10);
((FrameLayout.LayoutParams) frameLayout.getLayoutParams()).rightMargin = (int) holder.itemView.getContext().getResources().getDimension(R.dimen.dp28);
}
@CallSuper
protected void updateLayoutForSend(VH holder) {
ViewGroup frameLayout = (ViewGroup) holder.itemView.findViewById(R.id.mainContainer);
((FrameLayout.LayoutParams) frameLayout.getLayoutParams()).gravity = Gravity.RIGHT;
LinearLayout root = (LinearLayout) holder.itemView.findViewById(R.id.contentContainer);
((LinearLayout.LayoutParams) root.getLayoutParams()).gravity = Gravity.RIGHT;
LinearLayout timeLayout = (LinearLayout) root.getParent();
timeLayout.setGravity(Gravity.RIGHT);
ImageView imgTick = (ImageView) holder.itemView.findViewById(R.id.cslr_txt_tic);
TextView messageText = (TextView) holder.itemView.findViewById(R.id.messageSenderTextMessage);
// TextView iconHearing = (TextView) holder.itemView.findViewById(R.id.cslr_txt_hearing);
if (messageText != null) {
messageText.setTextColor(Color.parseColor(G.textBubble));
}
// ProtoGlobal.RoomMessageType messageType = mMessage.forwardedFrom == null ? mMessage.messageType : mMessage.forwardedFrom.getMessageType();
ProtoGlobal.RoomMessageStatus status = ProtoGlobal.RoomMessageStatus.UNRECOGNIZED;
if (mMessage.status != null) {
try {
status = ProtoGlobal.RoomMessageStatus.valueOf(mMessage.status);
} catch (RuntimeException e) {
e.printStackTrace();
}
}
if (status == ProtoGlobal.RoomMessageStatus.SEEN) {
if (G.isDarkTheme) {
setTextColor(imgTick, R.color.iGapColor);
} else {
setTextColor(imgTick, R.color.backgroundColorCall2);
}
} else if (status == ProtoGlobal.RoomMessageStatus.LISTENED) {
// iconHearing.setVisibility(View.VISIBLE);
if (G.isDarkTheme) {
setTextColor(imgTick, R.color.iGapColor);
} else {
setTextColor(imgTick, R.color.backgroundColorCall2);
}
imgTick.setVisibility(View.VISIBLE);
} else {
// setTextColor(imgTick, Color.parseColor(G.txtIconCheck));
imgTick.setColorFilter(Color.parseColor(G.txtIconCheck));
}
if (G.isDarkTheme) {
((View) (holder.itemView.findViewById(R.id.contentContainer)).getParent()).setBackgroundResource(R.drawable.rectangle_send_round_color_dark);
} else {
((View) (holder.itemView.findViewById(R.id.contentContainer)).getParent()).setBackgroundResource(R.drawable.rectangle_send_round_color);
}
GradientDrawable circleDarkColor = (GradientDrawable) ((View) root.getParent()).getBackground();
circleDarkColor.setColor(Color.parseColor(G.bubbleChatSend));
/**
* add main layout margin to prevent getting match parent completely
* set to mainContainer not itemView because of selecting item foreground
*/
((FrameLayout.LayoutParams) frameLayout.getLayoutParams()).leftMargin = (int) holder.itemView.getContext().getResources().getDimension(R.dimen.dp28);
((FrameLayout.LayoutParams) frameLayout.getLayoutParams()).rightMargin = (int) holder.itemView.getContext().getResources().getDimension(R.dimen.dp10);
//((LinearLayout.LayoutParams) (holder.itemView.findViewById(R.id.contentContainer).getLayoutParams())).rightMargin = (int) holder.itemView.getResources().getDimension(R.dimen.messageBox_minusLeftRightMargin);
//((LinearLayout.LayoutParams) (holder.itemView.findViewById(R.id.contentContainer).getLayoutParams())).leftMargin = 0;
}