在创建活动后,我正在尝试将动画应用到我的Android应用中的视图.为此,我需要确定视图的当前大小,然后设置动画以从当前大小缩放到新大小.此部分必须在运行时完成,因为视图根据用户的输入缩放到不同的大小.我的布局是用XML定义的.
这似乎是一件容易的事,虽然没有一个能解决我的问题,但很多问题都存在.所以也许我错过了一些明显的东西.我通过以下方式了解了我的观点:
ImageView myView = (ImageView)getWindow().findViewById(R.id.MyViewID);
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但打电话时getWidth()
,getHeight()
,getMeasuredWidth()
,getLayoutParams().width
,等,他们都返回0.我也试过手动调用measure()
视图上,然后到一个呼叫getMeasuredWidth()
,但没有效果.
我已经尝试调用这些方法并在我的activity onCreate()
和in中检查调试器中的对象onPostCreate()
.如何在运行时确定此视图的确切尺寸?
我想获得文本视图的行数
textView.setText("Test line 1 Test line 2 Test line 3 Test line 4 Test line 5.............")
Run Code Online (Sandbox Code Playgroud)
textView.getLineCount();
总是返回零
然后我也尝试过:
ViewTreeObserver vto = this.textView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ViewTreeObserver obs = textView.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
System.out.println(": " + textView.getLineCount());
}
});
Run Code Online (Sandbox Code Playgroud)
它返回确切的输出.
但这仅适用于静态布局.
当我动态地给布局充气时,这不再起作用了.
我如何在TextView中找到行数?
我有textview,其中包含文本的一部分.当用户单击箭头时,textview会调整大小以显示全文.请参阅下面的图片以获取示例:
TextView具有wrap_content高度,折叠时maxLines ="4".
箭头的onClick包含以下代码:
if (isExpanded) {
btnToggle.setImageDrawable(getResources().getDrawable(
R.drawable.arrow_down));
tvText.setMaxLines(4);
tvText.setEllipsize(TruncateAt.END);
} else {
btnToggle.setImageDrawable(getResources().getDrawable(
R.drawable.arrow_up));
tvText.setMaxLines(Integer.MAX_VALUE);
tvText.setEllipsize(null);
}
isExpanded = !isExpanded;
Run Code Online (Sandbox Code Playgroud)
此代码有效,但不是动画.我需要为扩展设置动画,因此TextView会将其设置为全高度.我找不到像MaxLines这样的动画属性.谁能帮助我?
如何从行中获取行号?
假设我有一个像这样的字符串
String testString = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis p";
Run Code Online (Sandbox Code Playgroud)
而且我有一个将显示字符串的视图.在另一种情况下,我想在渲染之前先获取行号.
我想从Android中获取此字符串中的行号.我有几种方法可以获得行号.但在每个解决方案中,我们都可以在视图渲染后获取行号.但是在渲染视图之前我想要它.我想得到20个或更多不同字符串的行号.
我怎么能得到这个想法?