• 解决TextView drawableRight左侧图片大小不可控的问题


    通过代码来修改图片的大小:

    Drawable rightDrawable= context.getResources().getDrawable(R.drawable.more);
    rightDrawable.setBounds(0, 0, drawable.getIntrinsicWidth() / 2, drawable.getIntrinsicHeight() / 2)
    tvMore.setCompoundDrawablesWithIntrinsicBounds(null,null,rightDrawable,null);

    其他解决方法

    自定义ImageTextView控件

    /**
     * Package Name:com.xes.jazhanghui.views ClassName: ImageTextView <br/>
     * Description: 解决TextView 图片大小不可控问题. <br/>
     * Date: 2017-2-21 下午4:52:45 <br/>
     * 
     * @author lihuixin
     * @version
     */public class ImageTextView extends TextView {
        private Drawable mDrawable;//设置的图片private int mScaleWidth; // 图片的宽度private int mScaleHeight;// 图片的高度private int mPosition;// 图片的位置 1上2左3下4右public ImageTextView(Context context) {
            super(context);
        }
    
        public ImageTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init(context, attrs);
        }
    
        public ImageTextView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init(context, attrs);
        }
    
        public void init(Context context, AttributeSet attrs) {
            TypedArray typedArray = context.obtainStyledAttributes(attrs,
                    R.styleable.ImageTextView);
    
            mDrawable = typedArray.getDrawable(R.styleable.ImageTextView_drawable);
            mScaleWidth = typedArray
                    .getDimensionPixelOffset(
                            R.styleable.ImageTextView_drawableWidth,
                            DensityUtil.dip2px(20));
            mScaleHeight = typedArray.getDimensionPixelOffset(
                    R.styleable.ImageTextView_drawableHeight,
                    DensityUtil.dip2px(20));
            mPosition = typedArray.getInt(R.styleable.ImageTextView_position, 3);
        }
    
        @Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            if (mDrawable != null) {
                mDrawable.setBounds(0, 0, DensityUtil.dip2px(mScaleWidth),
                        DensityUtil.dip2px(mScaleHeight));
    
            }
        }
    
        @Overrideprotected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            switch (mPosition) {
            case 1:
                this.setCompoundDrawables(mDrawable, null, null, null);
                break;
            case 2:
                this.setCompoundDrawables(null, mDrawable, null, null);
                break;
            case 3:
                this.setCompoundDrawables(null, null, mDrawable, null);
                break;
            case 4:
                this.setCompoundDrawables(null, null, null, mDrawable);
                break;
            default:
                break;
            }
        }
    
        /**
         * 设置左侧图片并重绘
         * 
         * @param drawableLeft
         */public void setDrawableLeft(Drawable drawable) {
            this.mDrawable = drawable;
            invalidate();
        }
    
        /**
         * 设置左侧图片并重绘
         * 
         * @param drawableLeftRes
         */public void setDrawableLeft(int drawableRes, Context context) {
            this.mDrawable = context.getResources().getDrawable(drawableRes);
            invalidate();
        }
    }

    设置attrs.xml配置

        <declare-styleable name="ImageTextView">
            <attr name="drawable" format="reference"/>
            <attr name="drawableWidth" format="dimension"/>
            <attr name="drawableHeight" format="dimension"/>
            <attr name="position" format="integer"/>
        </declare-styleable>

    布局文件中使用

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res/com.xes.jazhanghui.activity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_block_inset_white_ltr_8"
        android:orientation="vertical" >
    
    
            <com.xes.jazhanghui.views.ImageTextView
                android:id="@+id/tv_more"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawablePadding="5dp"
                android:text="更多"
                android:textColor="@color/color_737373"
                android:textSize="12sp"
                app:drawable="@drawable/more"
                app:drawableHeight="4dp"
                app:drawableWidth="3dp"
                app:position="3" />
    
        </RelativeLayout>
    
    </LinearLayout>





  • 相关阅读:
    获得最小的topK
    阿里凑单算法
    排序指标 --- 1、平均准确率均值 (Mean Average Precision-MAP) & 2、NDCG (normalized discounted CG-cumulative gain,累计增益)
    deepwalk算法
    tmp-动态规划-迷宫走法
    分治法-合并K个有序链表
    如何在创建hive表格的python代码中导入外部文件
    如何删除hive表格的分区
    pytorch中torch.nn构建神经网络的不同层的含义
    pytorch中如何使用预训练词向量
  • 原文地址:https://www.cnblogs.com/jeffen/p/6899198.html
Copyright © 2020-2023  润新知