在中英文字典中关于页面布局也很重要常用布局很多,但是这里采用的是LinearLayout实现:
运行成功的主界面如下布局main.xml:
<?xml version="1.0" encoding="utf-8"?> <!-- 展示结果的整体布局管理器的使用 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableLayout android:id="@+id/TableLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:stretchColumns="1"> <TableRow android:baselineAligned="true"> <!-- 单词文本描述 --> <TextView android:text="@string/word_textview_text" android:id="@+id/word_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:text android:gravity="left"></TextView> <!-- 输入单词编辑区 --> <EditText android:id="@+id/word_edittext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:singleLine="true" android:width="10px"></EditText> <!--查询单词相关的按钮--> <Button android:text="@string/query_button_text" android:id="@+id/query_button" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </TableRow> </TableLayout> <!-- 使用ListView展示单词的所有的相关的信息 --> <ListView android:id="@+id/search_listview" android:layout_width="wrap_content" android:layout_height="wrap_content"></ListView> <!-- 没有查询结果使用的组件 --> <TextView android:text="@string/no_searchresult_text" android:id="@+id/nosearchresult_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="invisible" android:padding="10sp" android:text android:textSize="20sp" android:textColor="@color/red"></TextView> </LinearLayout>
查询数据到数据填充到ListView中的组件界面中每一条记录布局(row.xml)如下:
<?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="?android:attr/listPreferredItemHeight" android:padding="6dip"> <!-- 定义一条记录的信息 --> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginRight="6dip" android:src="/blog_article/@drawable/icon/index.html" /> <LinearLayout android:orientation="vertical" android:layout_width="0dip" android:layout_weight="1" android:layout_height="fill_parent"> <TextView android:id="@+id/toptext" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:gravity="center_vertical" android:text /> <TextView android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:id="@+id/bottomtext" android:singleLine="true" android:ellipsize="marquee" /> </LinearLayout> </LinearLayout>
查看单个详情的界面的布局如下:
<?xml version="1.0" encoding="utf-8"?> <!-- 查看按钮之后单个界面的信息 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- 返回按钮 --> <Button android:text="@string/back_button_text" android:id="@+id/back_button" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button> <ScrollView android:id="@+id/ScrollView01" android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/word_textview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/green" android:text android:gravity="center_horizontal" android:textSize="20sp"></TextView> <ImageButton android:id="@+id/speak_img_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="/blog_article/@drawable/speaker/index.html"></ImageButton> <TextView android:text="@string/yinbiao_text" android:id="@+id/yinbiao_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text></TextView> <TextView android:id="@+id/yinbiao_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="30sp"></TextView> <TextView android:text="@string/desc_text" android:id="@+id/desc_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text></TextView> <TextView android:id="@+id/desc_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="30sp" ></TextView> <TextView android:text="@string/sample_text" android:id="@+id/sample_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text></TextView> <TextView android:id="@+id/sample_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="30sp"></TextView> </LinearLayout> </ScrollView> </LinearLayout>
在listview中使用viewflipper,
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return true;
// right to left swipe
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideRightIn);
viewFlipper.setOutAnimation(slideRightOut);
viewFlipper.showPrevious();
}
} catch (Exception e) {
// nothing
}
return true;
}
}
lstView.setOnTouchListener(gestureListener);
然后呢就会和setOnItemClickListener这个冲突,你本来想进行viewFlipper转换的时候却触发了OnItemClickListener,为了解决这个问题
需要继承 @Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// TODO Auto-generated method stub
Log.e("Item Click","Item Click");
return super.onSingleTapConfirmed(e);
}
在SimpleOnGestureListener中
在使用渐变作为背景的时候会出现抖动不清楚的问题如
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#3A3C39"
android:endColor="#181818"
android:angle="270"
/>
<corners android:radius="0dp" />
</shape>
android:background="@drawable/shape_background_grey"
如果出现上述问题如要
listView.getBackground().setDither(true);