gpt4 book ai didi

android - 当布局比屏幕宽时选择环绕 View

转载 作者:搜寻专家 更新时间:2023-11-01 08:11:02 25 4
gpt4 key购买 nike

我有一个带有图像和几个 TextView 的水平线性布局。在某些语言(德语...)中,文本太长以至于要将所有内容都放在一行中,布局必须比屏幕宽。为防止这种情况,android 自动使 TextView 换行到下一行。

有什么方法可以选择最终换行的 TextView 吗?目前看来,添加到布局的最后一个 View 是包装的 View 。但是,我真的很想让一个较早的 TextView 换行,并让最后一个 TextView 始终显示在一行中。这可能吗?我已经对大部分涉及的 View 进行了子类化,因此我可以覆盖 protected 方法。

这是我的代码的粗略概述:

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/some_icon" />
<TextView
android:id="@+id/can_wrap_if_neccessary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/some_really_long_text" />
<TextView
android:id="@+id/shouldnt_wrap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/some_more_really_long_text" />
</LinearLayout

最佳答案

我们可以知道哪个 Text 会换行。

逻辑:首先计算文本的宽度如果文本的宽度大于屏幕的宽度,则该文本将被换行

如果文本将被换行,下面的方法返回 true 否则返回 false

源代码

boolean isTextWrapped(String text) {
boolean isWrapped = false;
int widthOfText = 0;
int deviceWidth = 0;
// calculate widthOftext
TextView textView = new TextView(this);
textView.setVisibility(View.GONE);
Rect bounds = new Rect();
Paint textPaint = textView.getPaint();
textPaint.getTextBounds(text, 0, text.length(), bounds);
widthOfText = bounds.width();
System.out.println("...text view width..."+widthOfText);
// calculate width of screen
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
deviceWidth = displaymetrics.widthPixels;
System.out.println("...text view width..."+widthOfText+"...screen width..."+deviceWidth);
isWrapped = widthOfText > deviceWidth ? true : false;
return isWrapped;

}

关于android - 当布局比屏幕宽时选择环绕 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9596815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com