android - 当内容无法容纳时,如何创建默认形状为正方形且高度可自动调整的 TextView?

标签 android android-layout textview

我想创建一个默认为正方形的自定义 TextView,但如果文本无法容纳,高度会自动增加以容纳内容。

我尝试将高度设置为 wrap_content 并像这样覆盖 onMeasure():

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int newHeight = heightMeasureSpec > widthMeasureSpec ? heightMeasureSpec : widthMeasureSpec;
    super.onMeasure(widthMeasureSpec, newHeight);
}

但这没有用。

内容越少越好。 SquareView when content is small


但是当内容较多时,高度应该会扩大但不会。很多文字被剪掉了 enter image description here

最佳答案

你可以使用setMinHeight来达到这个目的

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int minHeight = MeasureSpec.getSize(widthMeasureSpec);
    setMinHeight(minHeight);
}

并在布局中将wrap_content设置为layout_height:

<com.test.SquareTextView
        android:id="@+id/squareTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" />

RecyclerView 更新:

1.在 Activity 类中获取屏幕宽度:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenWidth = size.x;

2.传递给adapter并在create item view时设置:

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View root = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.my_item, viewGroup, false);
    root.setMinimumHeight(screenWidth);
    return new ViewHolder(root);
}

关于android - 当内容无法容纳时,如何创建默认形状为正方形且高度可自动调整的 TextView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55429848/

相关文章:

android 处理 TextView 上的滚动和单击事件

c# - 如何在Xamarin中使用MediaPlayer获得跟踪的持续时间

android - 如果我将 lambda 作为监听器传递,我可以从 lambda 内部删除监听器吗

java - 平板电脑屏幕优化

android - 如何在 Android Studio 中垂直居中 ConstraintLayout 内容?

android - 获取要在 textView 上显示的 editText 值

java - 如何让 TextView 位于底部中心?

android - 在 onSavedInstanceState(bundle savingInstanceState) 中存储和检索存储的数据时出现问题

java - 静态字段未被 Realm Java 识别为可持久化

android - 如何插入 SlidingDrawer 横向?