我想创建一个默认情况下为正方形的自定义TextView,但是如果文本无法容纳,则高度会自动增加以容纳内容。
我尝试将高度设置为wrap_content
并覆盖onMeasure()
这样的高度:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int newHeight = heightMeasureSpec > widthMeasureSpec ? heightMeasureSpec : widthMeasureSpec;
super.onMeasure(widthMeasureSpec, newHeight);
}
但这没有用。
您可以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.将其传递给适配器并在创建项目视图时进行设置:
@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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句