getLayoutParams.width 与 getWidth()

Ake*_*Jha 2 android

我有以下观点:

<View
        android:id="@+id/divider"
        android:layout_height="2dp"
        android:background="#ffffff"
        android:layout_below="@+id/timer"
        android:layout_width="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

我正在我的项目中实现一个计时器。因此,函数 onTick() 每秒被调用一次:

public void onTick(long millisUntilFinished) {
            secsPassed++;
            minsPassed = (secsPassed-1)/60;
            View dividerWhite = findViewById(R.id.dividerWhite);
            View divider = findViewById(R.id.divider);
            Log.i("divider.getWdith() = ", divider.getWidth()-secsPassed + "");
            Log.i("layout width ", divider.getLayoutParams().width + " ");
        //further code to implement a timer
Run Code Online (Sandbox Code Playgroud)

问题是,当divider.getLayoutParams().width的值divider.getWidth()正确时(即剩余秒数),我得到 -1

我需要随着时间的推移动态改变视图的宽度。divider.setLayoutParams().width是一个很好的选择。但是,它并没有改变布局宽度,它仍然是-1

JiT*_*HiN 5

getLayoutParams().width 当宽度为 时返回 -1 MATCH_PARENTgetLayoutParams().width可以是 FILL_PARENTMATCH_PARENT在 API 级别 8 中替换为 ) 或WRAP_CONTENT或 精确大小。但getWidth()始终返回以像素为单位的宽度。