package org.namelessrom.devicecontrol.views; import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import org.namelessrom.devicecontrol.R; import org.namelessrom.devicecontrol.utils.DrawableHelper; import butterknife.BindView; import butterknife.ButterKnife; public class CardTitleView extends LinearLayout { @BindView(android.R.id.icon) ImageView icon; @BindView(android.R.id.title) TextView title; @BindView(android.R.id.content) FrameLayout content; private int iconResId = Integer.MIN_VALUE; private int iconTint = Integer.MIN_VALUE; private int titleResId = Integer.MIN_VALUE; public CardTitleView(Context context) { super(context); init(null); } public CardTitleView(Context context, AttributeSet attrs) { super(context, attrs); init(attrs); } public CardTitleView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(attrs); } @TargetApi(Build.VERSION_CODES.M) public CardTitleView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(attrs); } protected void init(@Nullable AttributeSet attrs) { setOrientation(LinearLayout.VERTICAL); final LayoutInflater inflater = LayoutInflater.from(getContext()); inflater.inflate(R.layout.card_view_title, this, true); ButterKnife.bind(this); parseAttrsIfPossible(attrs); if (iconResId != Integer.MIN_VALUE) { if (iconTint != Integer.MIN_VALUE) { final Drawable drawable = ContextCompat.getDrawable(getContext(), iconResId).mutate(); icon.setImageDrawable(DrawableHelper.applyColorFilter(drawable, iconTint)); } else { icon.setImageResource(iconResId); } } else { icon.setVisibility(View.GONE); } if (titleResId != Integer.MIN_VALUE) { title.setText(titleResId); } } protected void parseAttrsIfPossible(@Nullable AttributeSet attrs) { if (attrs == null) { return; } final TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CardTitleView); iconResId = a.getResourceId(R.styleable.CardTitleView_icon, Integer.MIN_VALUE); iconTint = a.getColor(R.styleable.CardTitleView_iconTint, Integer.MIN_VALUE); titleResId = a.getResourceId(R.styleable.CardTitleView_title, Integer.MIN_VALUE); a.recycle(); } public FrameLayout getContentView() { return content; } @Override public void addView(View child) { if (content != null) { content.addView(child); return; } super.addView(child); } @Override public void addView(View child, int index) { if (content != null) { content.addView(child, index); return; } super.addView(child, index); } @Override public void addView(View child, int width, int height) { if (content != null) { content.addView(child, width, height); return; } super.addView(child, width, height); } @Override public void addView(View child, ViewGroup.LayoutParams params) { if (content != null) { content.addView(child, params); return; } super.addView(child, params); } @Override public void addView(View child, int index, ViewGroup.LayoutParams params) { if (content != null) { content.addView(child, index, params); return; } super.addView(child, index, params); } }