/* * Copyright (C) 2010 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 com.android.contacts.list; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.util.AttributeSet; import android.view.Gravity; import android.view.View; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; import com.android.contacts.R; /** * A custom view for the pinned section header shown at the top of the contact list. */ public class ContactListPinnedHeaderView extends TextView { public ContactListPinnedHeaderView(Context context, AttributeSet attrs, View parent) { super(context, attrs); if (R.styleable.ContactListItemView == null) { return; } TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.ContactListItemView); int backgroundColor = a.getColor( R.styleable.ContactListItemView_list_item_background_color, Color.WHITE); int textOffsetTop = a.getDimensionPixelSize( R.styleable.ContactListItemView_list_item_text_offset_top, 0); int paddingStartOffset = a.getDimensionPixelSize( R.styleable.ContactListItemView_list_item_padding_left, 0); int textWidth = getResources().getDimensionPixelSize( R.dimen.contact_list_section_header_width); int widthIncludingPadding = paddingStartOffset + textWidth; a.recycle(); setBackgroundColor(backgroundColor); setTextAppearance(getContext(), R.style.SectionHeaderStyle); setLayoutParams(new LayoutParams(widthIncludingPadding, LayoutParams.WRAP_CONTENT)); setLayoutDirection(parent.getLayoutDirection()); setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); // Apply text top offset. Multiply by two, because we are implementing this by padding for a // vertically centered view, rather than adjusting the position directly via a layout. setPaddingRelative( getPaddingStart() + paddingStartOffset, getPaddingTop() + (textOffsetTop * 2), getPaddingEnd(), getPaddingBottom()); } /** * Sets section header or makes it invisible if the title is null. */ public void setSectionHeaderTitle(String title) { if (title != null) { setText(title); setVisibility(View.VISIBLE); } else { setVisibility(View.GONE); } } }