package com.parttime.widget;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.qingmu.jianzhidaren.R;
/**
* Created by cjz on 2015/7/24.
*/
public class EditItem extends FrameLayout{
private Context context;
private LayoutInflater inflater;
private TextView tvName;
private EditText etValue;
// private String title;
private String name;
private String hint;
private String value;
private boolean topDividerShown;
private boolean bottomDividerShown;
private int dividerLayoutWidth = LayoutParams.MATCH_PARENT;
private int dividerLayoutHeight ;
private boolean nameShow = true;
// private boolean titleShow = false;
// private int titleMargin;
private boolean initExecuted;
public EditItem(Context context) {
super(context);
if(!initExecuted){
initExecuted = true;
init(context, null);
}
}
public EditItem(Context context, AttributeSet attrs) {
super(context, attrs);
if(!initExecuted){
initExecuted = true;
init(context, attrs);
}
}
public EditItem(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
if(!initExecuted){
initExecuted = true;
init(context, attrs);
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public EditItem(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
if(!initExecuted){
initExecuted = true;
init(context, attrs);
}
}
private void init(Context context, AttributeSet attrs){
this.context = context;
inflater = LayoutInflater.from(context);
View root = inflater.inflate(R.layout.view_edit_item, this, false);
tvName = (TextView) root.findViewById(R.id.edit_item_name);
etValue = (EditText) root.findViewById(R.id.edit_item_value);
dividerLayoutHeight = context.getResources().getDimensionPixelSize(R.dimen.divider_width);
topDividerShown = bottomDividerShown = true;
// titleMargin = context.getResources().getDimensionPixelSize(R.dimen.ei_title_margin_default);
if(attrs != null){
assignXmlAttrs(attrs);
}
if(!nameShow){
tvName.setVisibility(View.GONE);
}
if(name != null){
tvName.setText(name);
}
if(hint != null){
etValue.setHint(hint);
}
if(value != null){
etValue.setText(value);
}
checkDividers();
addView(root);
}
private void assignXmlAttrs(AttributeSet attrs){
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.EditItem);
if(typedArray != null){
// title = typedArray.getString(R.styleable.EditItem_ei_title);
name = typedArray.getString(R.styleable.EditItem_ei_name);
hint = typedArray.getString(R.styleable.EditItem_ei_hint);
value = typedArray.getString(R.styleable.EditItem_ei_value);
nameShow = typedArray.getBoolean(R.styleable.EditItem_ei_nameShow, nameShow);
topDividerShown = typedArray.getBoolean(R.styleable.EditItem_ei_topDividerShow, topDividerShown);
bottomDividerShown = typedArray.getBoolean(R.styleable.EditItem_ei_bottomDividerShow, bottomDividerShown);
dividerLayoutHeight = typedArray.getDimensionPixelSize(R.styleable.EditItem_ei_divider_stroke_width, dividerLayoutHeight);
// titleShow = typedArray.getBoolean(R.styleable.EditItem_ei_titleShow, titleShow);
// titleMargin = typedArray.getDimensionPixelSize(R.styleable.EditItem_ei_titleMargin, titleMargin);
}
}
private void checkDividers(){
if(topDividerShown){
addView(makeTopDivider());
}
if(bottomDividerShown){
addView(makeBotttomDidider());
}
}
private View makeDivider(){
View divider = new View(context);
divider.setBackgroundColor(context.getResources().getColor(R.color.divider_color));
return divider;
}
private View makeTopDivider(){
View divider = makeDivider();
FrameLayout.LayoutParams fllp = new FrameLayout.LayoutParams(dividerLayoutWidth, dividerLayoutHeight);
fllp.gravity = Gravity.TOP;
divider.setLayoutParams(fllp);
return divider;
}
private View makeBotttomDidider(){
View divider = makeDivider();
FrameLayout.LayoutParams fllp = new FrameLayout.LayoutParams(dividerLayoutWidth, dividerLayoutHeight);
fllp.gravity = Gravity.BOTTOM;
divider.setLayoutParams(fllp);
return divider;
}
public void setName(String txt){
if(tvName != null){
tvName.setText(txt);
}
}
public void setName(int txtId){
if(tvName != null){
tvName.setText(txtId);
}
}
public void setValue(String value){
if(etValue != null){
etValue.setText(value);
}
}
public String getValue(){
return etValue != null ? etValue.getText().toString() : "";
}
public void addTextChangeListener(TextWatcher textWatcher){
etValue.addTextChangedListener(textWatcher);
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
if(tvName != null){
tvName.setEnabled(enabled);
}
if(etValue != null){
etValue.setEnabled(enabled);
}
}
}