我正在尝试制作一个可扩展的文本视图,它工作正常,但问题是旋转后 textview.getLinesCount() 返回文本视图中的字符数而不是行数,因此它在旋转后无法正常工作!
这是我的代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_info, container, false);
if (getArguments() != null) {
overView = getArguments().getString("overview");
}
overViewTv = view.findViewById(R.id.info_overview);
moreView = view.findViewById(R.id.overview_more);
overViewTv.setText(overView);
int maxLines = 3;
overViewTv.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
overViewTv.getViewTreeObserver().removeOnPreDrawListener(this);
if (!moreClicked) {
if (overViewTv.getLineCount() > maxLines) {
moreView.setVisibility(View.VISIBLE);
overViewTv.setMaxLines(maxLines);
moreClicked = true;
}
}
return true;
}
});
moreView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (moreClicked) {
moreView.setImageResource(R.drawable.ic_expand_less_black_24dp);
overViewTv.setMaxLines(overViewTv.getLineCount());
moreClicked = false;
} else {
moreView.setImageResource(R.drawable.ic_expand_more_black_24dp);
overViewTv.setMaxLines(maxLines);
moreClicked = true;
}
}
});
return view;
}
我也试过这种方法getViewTreeObserver().addOnGlobalLayoutListener()
,但同样的事情发生了。