Increase the font size based on the size of the de

2019-01-23 02:16发布

I planned to use different font size for the textview on different device size so as to make the letters legible. I have already decided not to use different layouts for different devices and built a common layout to fit in all the devices. Now the only problem is on the text size.

Questions :

  1. I would like to have your technical suggestions on how to alter the font size based on the size (the physical size) of the device.

  2. How to derive the font size based on the aspect ratio.

  3. Any Flaws in using this kind of approach ?

Xml for the text view

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tvValue4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="I planned to use different font size for the textview on different device size so as to make the letters legible. I have already decided not to use different layouts for different devices and built a common layout to fit in all the devices. Now the only problem is on the text size."
        android:textColor="#000000"
        android:textSize="15sp" />

</LinearLayout>

Thanks in advance

6条回答
我命由我不由天
2楼-- · 2019-01-23 03:00

for this issue I am using following library in so many projects and believe this is fantastic. No need to worry about screens. But again you need to create separate layouts for tabs.

https://github.com/intuit/sdp

查看更多
叛逆
3楼-- · 2019-01-23 03:05
    String s= "hello";
    TextView tv= (TextView) findViewById(R.id.tv);
    Spannable span = new SpannableString(s);
    span.setSpan(new RelativeSizeSpan(5f), 0, span.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.setText(span);

Based on screen size change 5f to whatever you want.

http://developer.android.com/guide/practices/screens_support.html. Check the topic under heading Best Practices.

查看更多
淡お忘
4楼-- · 2019-01-23 03:07

Try this, Add this attribute in your xml. It will adjust textsize based on screensize try it.

 style="@android:style/TextAppearance.DeviceDefault.Medium"
查看更多
冷血范
5楼-- · 2019-01-23 03:11

For font sizes use scale pixels (sp). Android will scale the font size accordingly depending on the device density. Above posts have a better explanation and the reasoning.

查看更多
戒情不戒烟
6楼-- · 2019-01-23 03:13

Android has built in facilities for this- dp and sp. dp is device pixels. It basically is 1dp=1/160th of an inch. This allows you to specify the height of the font in real world size. Sp is scaled pixels. This size scales based on the default font size, so a user can scale up his system font and your app will match it. Handy for people with sight problems who need big text, while not taking up screen real estate for others.

You should probably be using one or the other of these.

查看更多
虎瘦雄心在
7楼-- · 2019-01-23 03:17

Yes, this approach is flawed. Android devices have different sizes, but they can also have very different densities as well.

enter image description here

You should just be following the Android design best practices.

enter image description here

They're actually very well thought out. Why would you want to reinvent the wheel?

查看更多
登录 后发表回答