这几天一直被listview怎么合理的放进scorllview中的问题困扰,尝试过把listview放入scorllview中的朋友都知道,被放入的listview显示是有问题的,无论怎么设置layout都只显示大概2行的高度,看起来很郁闷,更别说美观了,后来上网查询了一下,解决方法有的是用linearlayout替换listview,还有修改onmeasure的,我比较懒个人感觉很麻烦不喜欢,终于想出了一个还算和谐的解决方法:xml中的textlist设置如下:
<?xml version=“1.0” encoding=“UTF-8”?>
<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“fill_parent”
android:layout_height=“wrap_content”
android:orientation=“vertical”
android:background=“#44444444”>
<ScrollView
android:layout_width=“fill_parent”
android:layout_height=“wrap_content”>
<LinearLayout
android:id=“@+id/ll1”
android:layout_width=“fill_parent”
android:layout_height=“wrap_content”
android:scrollbars=“vertical”
android:orientation=“vertical”
android:paddingLeft=“15dp”
android:paddingRight=“15dp”
android:paddingTop=“30dp”
android:paddingBottom=“30dp”
android:background=“#ff888888”>
<TextView
android:text=“あ”
android:textColor=“#ffeeeeee”
android:textSize=“18sp”
android:layout_width=“fill_parent”
android:layout_height=“wrap_content”></TextView>
<ListView
android:scrollbars=“none”
android:stackFromBottom=“true”
android:id=“@+id/lv0”
android:layout_width=“fill_parent”
android:layout_height=“20dp”></ListView>
</LinearLayout>
</ScrollView>
</LinearLayout>
其中的textview是我做的东西要用到的,和方法无关可以不看,然后就是在java中重新设置listview的高度了,目的是把listview“撑”开:
LinearLayout.LayoutParams lp5 =new LinearLayout.LayoutParam(LayoutParams.FILL_PARENT, listItem.size()*51-1);
其中第一个属性不必说了,第二个是为了计算listview要设置的总高度用的,51是我事先设置好的一行的高度(50)+每行之间的间隔(1)而得来的,listItem.size()是我要显示的行数,用.setLayoutParams(lp5);来重新设置高度,其他别的设置跟以前一样,想要源码我整理完之后贴出来
分类索引: 资源分享
listview与ScrollView老问题的另类解法
使用Android自带Gallery组件实现CoverFlow,源码+解析
使用过Android自带的gallery组件的人都知道,gallery实现的效果就是拖动浏览一组图片,相比iphone里也是用于拖动浏览图片的coverflow,显然逊色不少。实际上,可以通过扩展gallery,通过伪3D变换可以基本实现coverflow的效果。本文通过源代码解析这一功能的实现。具体代码作用可参照注释。
最终实现效果如下:
要使用gallery,我们必须首先给其指定一个adapter。在这里,我们实现了一个自定义的ImageAdapter,为图片制作倒影效果。
传入参数为context和程序内drawable中的图片ID数组。之后调用其中的createReflectedImages()方法分别创造每一个图像的倒影效果,生成对应的ImageView数组,最后在getView()中返回。
阅读全文
Java日期时间函数
- package test;
- import java.sql.Timestamp;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- public class SQLDate {
- public static void main(String[] args){
- System.out.println(System.currentTimeMillis()); //结果:1244711626453
- java.util.Date date1 = new java.util.Date();
- System.out.println(date1.toString()); //结果: Thu Jun 11 16:27:57 CST 2009
- //java.sql.Date extends java.util.Date
- java.sql.Date date2 = new java.sql.Date(System.currentTimeMillis());
- System.out.println(date2.toString()); //结果: 2009-06-11
- java.sql.Date date3 = new java.sql.Date(date1.getTime());
- System.out.println(date3.toString()); //结果:2009-06-11
- //Timestamp extends java.util.Date
- Timestamp stamp1 = new Timestamp(System.currentTimeMillis());
- System.out.println(stamp1.toString()); //结果: 2009-06-11 16:27:57.75
- Timestamp stamp2 = new Timestamp(date1.getTime());
- System.out.println(stamp2.toString()); //结果:2009-06-11 16:52:56.171
- //日期时间转换成格式化的字符串
- SimpleDateFormat sdf = new SimpleDateFormat(“yyyy/MM/dd HH:mm:ss”);
- //format(java.util.Date date), Timestamp是java.util.Date的子类
- String timeStr = sdf.format(stamp1);
- System.out.println(timeStr); //结果:2009/06/11 16:52:56
- //SimpleDateFormat extends DateFormat,DateFormat是抽象类
- DateFormat df = new SimpleDateFormat(“yyyy/MM/dd HH:mm:ss”);
- String timeStr2 = df.format(date1);
- String timeStr3 = df.format(date2);
- System.out.println(timeStr2); //结果:2009/06/11 16:52:56
- System.out.println(timeStr3); //结果: 2009/06/11 16:52:56
- //字符串转化为日期时间
- try {
- //parse()中的参数必须与sdf中定义的格式一致,否则抛异常
- java.util.Date date6 = sdf.parse(“2009/12/10 5:12:02″);
- System.out.println(date6.toString()); //结果: Thu Dec 10 05:12:02 CST 2009
- java.sql.Date date7 = new java.sql.Date(date6.getTime());
- System.out.println(date7.toString()); //结果: 2009-12-10
- //注意: sdf.parse()返回值是java.util.Date类型,不能转化成java.sql.Date类型
- //java.sql.Date date8 = (java.sql.Date)sdf.parse(“2009/12/10 5:12:02″); //不可行
- Timestamp stamp9 = new Timestamp(date7.getTime());
- System.out.println(stamp9.toString()); //结果: 2009-12-10 05:12:02.0
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- }



