编辑:解决了!Awnser 1. 无法推送/投票
我试图找出几个小时来进行“结束学分”活动的最佳方式是什么。现在我有一个TableLayout
内部 aRelativeLayout
来使桌子居中。我正在使用一个简单的动画文件:
<translate
android:duration="20000"
android:fromYDelta="100%p"
android:toYDelta="-100%p" />
问题是,学分表比屏幕大得多,大约大 4 倍,因此表在屏幕尺寸处被切割。动画效果很好,但只有表格的可视部分穿过显示器。
有没有更聪明的方法来创建结束学分?在android中是否可以不按显示尺寸切割表格?
也许这还是太多的文字?(ScrollView
我得到“视图太大而无法放入绘图缓存”)
编辑:在 Luksprog 的帮助下,我让整个表格向下滚动。就像已经提到的那样,现在快得多了。现在我在通过处理程序或 timertask 控制速度时遇到问题。因为要显示并使表格可滚动,我在网上找到了这个解决方案,否则它不会滚动:
public class Credits extends Activity {
int mesuredHeightScroll;
ScrollView scroll;
boolean first_time = true;
protected void onCreate(Bundle savedInstanceState) {
if (first_time == true) {
super.onCreate(savedInstanceState);
setContentView(R.layout.credits);
scrolldownthetable();
}
}
private void scrolldownthetable() {
// TODO Auto-generated method stub
final ScrollView scroll = (ScrollView) findViewById(R.id.scrolltable);
TableLayout table = (TableLayout) findViewById(R.id.table);
OnGlobalLayoutListener listener = new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scroll.smoothScrollTo(0, mesuredHeightTable);
}
};
table.getViewTreeObserver().addOnGlobalLayoutListener(listener);
};
/**
* Draw the Layout, otherwise getMesuredHeight returns 0, null onCreate
* to call it again, first time to false, so onCreate doesn't call again on
* focus change (resume,pause...)
*/
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
ScrollView scroll = (ScrollView) findViewById(R.id.scrolltable);
TableLayout table = (TableLayout) findViewById(R.id.table);
mesuredHeightTable = table.getMeasuredHeight();
mesuredHeightScroll = scroll.getMeasuredHeight();
onCreate(null);
first_time = false;
}
}
有没有办法让这个 scrollTo() 在 Globallayoutlistener 中自动化?还是我的代码很愚蠢并且有更舒适的方法?如果有人可以帮助我编写一些代码,那就太好了,因为我的时间不多了:/