我有一个在xml文件中定义高度和宽度的scrollview,但是我想在运行时动态地增加或减少scrollview的高度和宽度。
实际上我想将每秒10 px的滚动视图的高度和宽度增加10秒。但是使用这段代码的scrollView.getLayoutParams()。height = GivenHeight我可以只增加一次运行时间。我们可以增加一个以上。
提前致谢。
答案 0 :(得分:5)
scrollView.getLayoutParams().height = yourNewHeight; // in pixels
scrollView.getLayoutParams().width = yourNewWidth; // in pixels
编辑您的新问题: 如果你想随着时间的推移增加它,你可以通过使用TimerTask并在UI线程上运行它来轻松实现这一点,因为我们正在触摸它的视图。 我会给你代码,因为它非常简单。
int secondCounter = 0;
int delay = 0; // delay for 0 sec.
int period = 1000; // repeat every sec.
final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
// do work inside ui thread
runOnUiThread(new Runnable() {
public void run() {
// do your work right here
secondCounter++;
yourNewHeight += 10;
yourNewWidth += 10;
scrollView.getLayoutParams().height = yourNewHeight; // in pixels
scrollView.getLayoutParams().width = yourNewWidth; // in pixels
//stop the timer when 10 seconds has passed
if(secondCounter == 10){
timer.cancel();
}
}
});
}
}, delay, period);
编辑: 强制查看刷新..
ViewGroup vg = findViewById (R.id.rootLayout);
vg.invalidate();
在设置新的高度和宽度后,您需要在run方法中调用invalidate。
答案 1 :(得分:1)
scrollView.getLayoutParams().height = assignHeight;
scrollView.getLayoutParams().width = assignWidth;