簡體   English   中英

如何增加 TextView 的大小並在 for 循環中獲取它的寬度,Android

[英]How to increase TextView size and get width of it in for loop, Android

當按鈕單擊 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
.
.

像這樣使用 setTextSize():

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

原始答案在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM