Android:如何基于另一个文本视图编程设置文本视图的文本大小

tvz2xvvm  于 2023-02-14  发布在  Android
关注(0)|答案(2)|浏览(147)

所以我有两个文本视图,一个有特定的高度和自动调整大小属性,另一个是普通的多行文本视图,内容按高度换行。

<androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/tvMovieRating"
            android:layout_width="match_parent"
            android:layout_height="@dimen/tvOthersActivityMovieHeight"
            android:layout_marginStart="@dimen/text_view_movie_description_margin_start"
            android:layout_marginHorizontal="@dimen/mainCLMarginActivityMovie"
            android:text="@string/movieRatingHint"
            android:textColor="@color/white"
            app:autoSizeMaxTextSize="@dimen/all_auto_max_text_sizes"
            app:autoSizeMinTextSize="@dimen/all_auto_min_text_sizes"
            app:autoSizeStepGranularity="@dimen/all_auto_size_step_granularities"
            app:autoSizeTextType="uniform"
            app:layout_constraintTop_toBottomOf="@id/tvMovieNameAndDate"
            />

        <TextView
            android:id="@+id/tvMovieDescriptionList"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/text_view_movie_description_margin_start"
            android:layout_marginHorizontal="@dimen/mainCLMarginActivityMovie"
            android:textSize="268sp"
            android:text="@string/lorem_ispum"
            android:textColor="@color/white"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tvNonChangeableDescriptionText"
            />

现在我尝试根据第一个textView的textSize设置第二个textView的textSize大小。

binding.tvMovieDescriptionList.textSize = binding.tvMovieRating.textSize

但没成功有什么帮助吗

yzckvree

yzckvree1#

也许你忘了通知你的绑定。大多数绑定的更改都需要你通知他们来更新它们。我会试试的

binding.notify()

binding.notifyAll()

另一个注意事项是,你总是可以简单地将你的自动调整尺寸复制到你的辅助文本视图中,我不明白为什么你不能这样做,因为这只是两个文本视图,而不是1120。

lrl1mhuk

lrl1mhuk2#

不能直接执行以下操作:setTextSize(getTextSize()).
原因是getTextSize()返回精确像素大小,同时setTextSize()设置缩放像素单位。该单位与这些函数不一致。
因此,最简单的方法是,在设置大小时可以提及单位:

binding.tvMovieDescriptionList.setTextSize(TypedValue.COMPLEX_UNIT_PX, binding.tvMovieRating.textSize)

或者,您可以在设置之前自行计算缩放像素单位:

val metrics = resources.displayMetrics
binding.tvMovieDescriptionList.textSize = binding.tvMovieRating.textSize / metrics.density

相关问题