Units Problem: How to read text size as custom attr from xml and set it to TextView in java code
2013-12-05 11:08
621 查看
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:
The problem is: how to read the client’s text size number and set it to the TextVew of MyView?
In MyView.java,
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:
This will make sure you’re working with the same units.
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:
<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,
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:
this.textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
This will make sure you’re working with the same units.
相关文章推荐
- Units Problem: How to read text size as custom attr from xml and set it to TextView in java code
- Units Problem: How to read text size as custom attr from xml and set it to TextView in java code
- Android: How to download the latest zip Android Source Code easily and using it in Intellij
- How to implement equals() and hashCode() methods in Java[reproduced]
- How to create a project from existing source in Eclipse and then find it?
- How to generate UML Diagrams from Java code in Eclipse
- How to Parse or Read XML File in Java >> XML Tutorial Example
- [linux]How to set PATH in shell script, and keep it avaiable even after it exits
- How To Read XML File In Java – (DOM Parser)
- I have a custom view that I want to be able to initialize both in-code and in nib.
- How to read one column from SQLite and store in Array
- How to read and write JSON files in Java(Gson)
- Parsing Failure in config.xml: java.lang.IllegalArgumentException: In production mode, it's not allowed to set a clear text value to the property
- TextView with SingleLine as true and Gravity as Center not passing the events to the ViewPager if it has a Click Event
- How to read and parse CSV file in Java
- How To Read XML File In Java – (SAX Parser)
- how to save a c++ object in java object and use it
- Using Bytecode Outline to View Java bytecode in Eclipse
- How to Set and Unset Local, User and System Wide Environment Variables in Linux
- How to read a frame from YUV file in OpenCV?