常见布局&控件——收缩框

相关图片地址

一、效果图

这里写图片描述

二、自定义AutoCompleteTextView图标居中

package com.daqsoft.android.emergentpro.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.AutoCompleteTextView;

import com.android.daqsoft.emergent.R;
/**
 * 注意此类效果是让AutoCompleteTextView的drawableLeft的图标居中显示
 * 使用时需要在xml中添加drawableLeft和gravity = “center_vertical”,以免影响效果
 */
public class AutoCompleteTextViewWithCenterDrawable extends
        AutoCompleteTextView {

    public AutoCompleteTextViewWithCenterDrawable(Context context,
            AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public AutoCompleteTextViewWithCenterDrawable(Context context,
            AttributeSet attrs) {
        super(context, attrs);
    }

    public AutoCompleteTextViewWithCenterDrawable(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        Drawable[] drawables = getCompoundDrawables();
        if (drawables != null) {
            Drawable drawableLeft = drawables[0];
            if (drawableLeft != null) {
                float textWidth = getPaint().measureText(getText().toString());
                float hintWidth = getPaint().measureText(getHint().toString());
                int drawablePadding = getCompoundDrawablePadding();
                int drawableWidth = 0;
                drawableWidth = drawableLeft.getIntrinsicWidth();
                float bodyWidth ;
                if (textWidth == 0f) {
                    bodyWidth = hintWidth + drawableWidth + drawablePadding;
                }
                else {
                    bodyWidth = textWidth + drawableWidth + drawablePadding;
                }
                canvas.translate((getWidth() - bodyWidth) / 2, 0);
            }
        }
        super.onDraw(canvas);
    }

    @Override
    protected void onTextChanged(CharSequence text, int start,
            int lengthBefore, int lengthAfter) {
        super.onTextChanged(text, start, lengthBefore, lengthAfter);
        if (!TextUtils.isEmpty(text)) {
//          getCompoundDrawables()[0].setVisible(false, true);
            this.setCompoundDrawables(null, null, null, null);
            setGravity(Gravity.CENTER);//输入的时候设置文字居中显示
        }
        else {
//          getCompoundDrawables()[0].setVisible(true, true);
            Drawable drawable= getResources().getDrawable(R.drawable.search);  
            /// 这一步必须要做,否则不会显示.  
            drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());  
            setCompoundDrawables(drawable,null,null,null); 
            setGravity(Gravity.CENTER_VERTICAL);//清空时设置图标和hint居中
        }
    }
}

三、布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="5dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="10dp"
    android:background="@drawable/messages_card_background"
    android:gravity="center_vertical"
    android:visibility="visible" >

    <com.daqsoft.android.emergentpro.view.AutoCompleteTextViewWithCenterDrawable
        android:id="@+id/include_actv_search"
        style="@style/myAutoCompleteTextView"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="@android:color/transparent"
        android:gravity="center_vertical"
        android:hint="@string/please_input_something"
        android:maxLength="10"
        android:padding="10dp"
        android:drawableLeft="@drawable/search"
        android:imeOptions="actionSearch"
        android:paddingRight="60dp"
        android:singleLine="true"
        android:textSize="13sp"
        >
    </com.daqsoft.android.emergentpro.view.AutoCompleteTextViewWithCenterDrawable>

    <ImageButton
        android:id="@+id/include_ib_clear"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="@null"
        android:onClick="onClick"
        android:padding="10dp"
        android:src="@drawable/search_cancel"
        android:visibility="gone" />

</RelativeLayout>

需要的图片资源地址:

style=”@style/myAutoCompleteTextView”:

    <!-- 去除AutoCompleteTextView下拉显示时的黑边 -->
    <style name="myAutoCompleteTextView">
        <item name="android:completionThreshold">2</item>
        <item name="android:dropDownSelector">@android:drawable/list_selector_background</item>
        <item name="android:popupBackground">@android:color/transparent</item>
        <item name="android:dropDownVerticalOffset">0dip</item>
        <item name="android:dropDownHorizontalOffset">0dip</item>
        <item name="android:dropDownWidth">wrap_content</item>
        <item name="android:textColorHint">@color/gray_addr</item>
        <item name="android:background">@null</item>
        <item name="android:textCursorDrawable">@drawable/color_cursor</item>
    </style>

@color/gray_addr:

<color name="gray_addr">#999999</color>

@drawable/color_cursor:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <size android:width="2dp" />

    <solid android:color="@color/main" />

</shape>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值