Как увеличить размер TextView и получить его ширину для цикла Android - PullRequest
0 голосов
/ 10 ноября 2019

Когда нажимается кнопка запуска цикла for и цикла for, я увеличиваю размер текста и записываю ширину TextView. но это не увеличивает размер и всегда получает ту же самую ширину (проверьте журнал, добавленный ниже). Я добавил свой полный код. Как это исправить?

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:background="@color/colorPrimary"
        android:fontFamily="@font/roboto"
        android:text="00:00" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:onClick="ocBtnIncrease"
        android:text="Increase" />

</RelativeLayout>

MainActivity.java

package com.example.test;

import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    public static final String TAG = MainActivity.class.getSimpleName();
    TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = findViewById(R.id.tv);
    }

    public void ocBtnIncrease(View view) {
        for (int i = 1; i < 500; i++) {
            tv.setTextSize(i);
            Log.i(TAG, "i: " + i);
            Log.i(TAG, "WIDTH: " + tv.getWidth());
            SystemClock.sleep(500);
        }
    }
}

Журнал

I/MainActivity: i: 1
I/MainActivity: WIDTH: 71
I/MainActivity: i: 2
I/MainActivity: WIDTH: 71
I/MainActivity: i: 3
I/MainActivity: WIDTH: 71
I/MainActivity: i: 4
.
.

1 Ответ

0 голосов
/ 10 ноября 2019

Используйте setTextSize () следующим образом:

tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18f);

Исходный ответ здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...