Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вписать текст в одну строку - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android .java to .smali error http://www.cyberforum.ru/android-dev/thread1858147.html
Здравствуйте, возникла необходимость конвертнуть один файл джава в смали(чтоб апктулу скормить), стандартный jd-gui не может редактировать код java, отредактировал другим способом(через блокнот:D). И...
Программирование Android EditText долго отображается Добрый день! Делаю для себя редактор, заодно и учусь писать приложения для Android, и столкнулся с такой проблемой, при открытии файла большого размера (например 17Кб отображается примерно черзе 25... http://www.cyberforum.ru/android-dev/thread1858086.html
Смещается изображение за границы ImageView Программирование Android
Моя головная боль - это рисование лайаутов. В очередной раз встал в ступор... Почему изображение из ImageView выходит за рамки самого ImageView'а? И может подскажете, как правильно набросать на...
Как сделать, чтобы определенный layout включался при определенном языке? Программирование Android
К примеру у меня приложение на 3 языках. Как сделать чтобы когда я включал русский язык, показывался другой layout вместо изначально? Вобщем заменение страницы с определенным языком?
Программирование Android Как убрать эффект нажатия в TabLayout http://www.cyberforum.ru/android-dev/thread1857952.html
Привет всем! При нажатии на tab на мгновение появляется соответствующий "эффект нажатия". Как сделать так, чтобы просто менялись иконки без каких-либо эффектов. TabLayout ...
Программирование Android Отличия debug режима от release Как в Android Studio включить сборку в режиме release? И чем релиз сборка отличается от дебаг? Какие внешние отличия? Чем отличается apk в двух режимах? И в режиме релиза можно отлаживать проект или... подробнее

Показать сообщение отдельно
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115

Вписать текст в одну строку - Программирование Android

24.11.2016, 00:04. Просмотров 317. Ответов 11
Метки (Все метки)

Здравствуйте, всем.

Вывожу большие числа. Как бы сделать так, чтобы они всегда выводились в одну строку... то есть чем больше число, тем меньше шрифт? Числа от 2 до 30 знаков... Можно ли без перебора это как-то вычитать? Ширину поля в пикселях могу получить, длину выводимой строки тоже знаю, как бы теперь эти параметры связать? Видимо связать надо с setTextSize?]

Заранее, спасибо.

Добавлено через 5 минут
Соответственно, если меняется ориентации экрана - поле для вывода становится в два раза длиннее и хотелось бы шрифт тоже сделать побольше...

Добавлено через 5 часов 11 минут
Почти решил задачу... Выяснил сколько пикселей занимает один символ в зависимости от sp

Сделал такой тест:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
 
        main =  (LinearLayout) findViewById(R.id.main);
        lparams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        for (int i=0; i<100; i++) {
            t = new TextView(this);
            t.setTextSize(i);
            t.setText("9");
            t.setLayoutParams(lparams);
            main.addView(t);
        }
    }
 
    public void showWidth(View view) {
        int w;
        for (int i=0; i<main.getChildCount()-1; i++) {
            w = main.getChildAt(i).getWidth();
            ((TextView) main.getChildAt(i)).append(" - "+Integer.toString(w)+" - "+Integer.toString(i));
            Log.d(TAG, Integer.toString(w)+" - "+Integer.toString(i));
        }
    }
В компоновке есть кнопка. По нажатии срабатывает showWidth();
В логе:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
11-23 23:56:43.020 17953-17953/ru.ant.spsize D/OUT: 1 - 0
11-23 23:56:43.020 17953-17953/ru.ant.spsize D/OUT: 2 - 1
11-23 23:56:43.020 17953-17953/ru.ant.spsize D/OUT: 3 - 2
11-23 23:56:43.020 17953-17953/ru.ant.spsize D/OUT: 5 - 3
11-23 23:56:43.021 17953-17953/ru.ant.spsize D/OUT: 7 - 4
11-23 23:56:43.021 17953-17953/ru.ant.spsize D/OUT: 8 - 5
11-23 23:56:43.021 17953-17953/ru.ant.spsize D/OUT: 10 - 6
11-23 23:56:43.021 17953-17953/ru.ant.spsize D/OUT: 12 - 7
11-23 23:56:43.021 17953-17953/ru.ant.spsize D/OUT: 13 - 8
11-23 23:56:43.021 17953-17953/ru.ant.spsize D/OUT: 15 - 9
11-23 23:56:43.021 17953-17953/ru.ant.spsize D/OUT: 17 - 10
11-23 23:56:43.022 17953-17953/ru.ant.spsize D/OUT: 19 - 11
11-23 23:56:43.022 17953-17953/ru.ant.spsize D/OUT: 20 - 12
11-23 23:56:43.022 17953-17953/ru.ant.spsize D/OUT: 22 - 13
11-23 23:56:43.022 17953-17953/ru.ant.spsize D/OUT: 24 - 14
11-23 23:56:43.022 17953-17953/ru.ant.spsize D/OUT: 25 - 15
11-23 23:56:43.022 17953-17953/ru.ant.spsize D/OUT: 27 - 16
11-23 23:56:43.022 17953-17953/ru.ant.spsize D/OUT: 29 - 17
11-23 23:56:43.022 17953-17953/ru.ant.spsize D/OUT: 30 - 18
В итоге вычислил, что ширина одного символа достаточно точно равна w = 1,675*sp;
TextView.setTextSize() - задает размер текста именно в sp.
Теперь зная сколько символов в строке я могу рассчитать нужную ширину поля, а следовательно и нужный sp.

Но это для моего экрана.... Как sp зависит от плотности экрана? Или от разрешения?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru