zoukankan      html  css  js  c++  java
  • Units Problem: How to read text size as custom attr from xml and set it to TextView in java code

    Here is this topic’s background:

    I defined a custom View which extends FrameLayout and contains a TextView, calledMyView here. And I defined custom attribute “myviewtextsize” in attrs.xml for MyView so that clients can set different text size in layout xml for the TextView of MyView.

    So far, clients code can set text size like this:

    1
    2
    3
    4
    5
    6
    
    <MyView  
         android:…  
         …
         my:myviewtextsize=”@dimen/textsize_24″  
         …  
    /> 
    

    The problem is: how to read the client’s text size number and set it to the TextVew of MyView?

    In MyView.java,

    1
    2
    3
    
    float textSize = typedArray.getDimension(R.MyView_myviewtextsize, -1);  
      
    this.textView.setTextSize(textSize).  
    

    Above code goes wrong. The text size is bigger than it’s supposed to.

    Why? It is mixed units problem.

    The default method setTextSize(float) assumes you’re inputting sp units (scaled pixels), while the typedArray.getDimension() method returns an exact pixel size.

    It can be fixed this by using the alternate setTextSize(TypedValue, float), like below:

    1
    
    this.textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);  
    

    This will make sure you’re working with the same units.

  • 相关阅读:
    Redis3.2集群部署安装
    熟悉SQL Server 数据类型
    泛型的参数简介和参数约束
    流(Stream)与文件流(FileStream)
    C#提取双引号中的字符串
    数组,一维数组,二维数组,交错数组
    结构,枚举
    C#中唯一的三元运算符
    位运算
    异常处理语句
  • 原文地址:https://www.cnblogs.com/mosthink/p/5288899.html
Copyright © 2011-2022 走看看