Android 如何使listview和table可滚动的屏幕?
我是android新手。当我尝试使屏幕可滚动时,屏幕会变得可滚动,但内容不会显示。屏幕包含一个listview和另一个tableview。这是我正在使用的代码Android 如何使listview和table可滚动的屏幕?,android,sup,Android,Sup,我是android新手。当我尝试使屏幕可滚动时,屏幕会变得可滚动,但内容不会显示。屏幕包含一个listview和另一个tableview。这是我正在使用的代码 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" and
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:stretchColumns="1"
android:scrollbars="vertical"
android:isScrollContainer="true"
android:scrollbarAlwaysDrawVerticalTrack="true">
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="70dp" android:layout_marginRight="3dp"
>
<TableRow android:layout_width="wrap_content" android:layout_marginTop="5dp" >
<ImageView
android:id="@+id/logo"
android:layout_width="90dp"
android:layout_height="90dp"
android:src="@drawable/logo"
android:layout_marginLeft="3dp"
/>
<ImageView
android:id="@+id/back"
android:layout_width="30dp"
android:layout_height="40dp"
android:src="@drawable/back"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
/>
<ImageView
android:id="@+id/timesheet"
android:layout_width="90dp"
android:layout_height="70dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="1dp"
android:src="@drawable/timesheet" />
<ImageView
android:id="@+id/home"
android:layout_width="35dp"
android:layout_height="50dp"
android:src="@drawable/home"
android:layout_marginTop="17dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="20dp"
/>
</TableRow>
</TableLayout>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="40dp" android:layout_marginTop="70dp" android:layout_marginLeft="5dp" android:layout_marginRight="8dp"
>
<TableRow android:layout_width="70dp" android:layout_height="100dp" android:layout_marginTop="10dp" android:background="#000000" >
<TextView
android:text="Timesheets for Approval"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="18dp"
android:layout_marginTop="3dp"
android:textColor="#ffff"
android:layout_marginLeft="70dp"
/>
</TableRow>
</TableLayout>
<ListView android:layout_width="wrap_content"
android:id="@+id/listView1"
android:layout_height="wrap_content"
android:layout_marginTop="120dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="8dp"
/>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1" android:layout_marginTop="415dp" android:layout_marginLeft="5dp" android:layout_marginRight="8dp" android:layout_width="400dp" android:layout_height="170dp"
android:stretchColumns="*"
android:background="@drawable/shape">
<TableRow android:layout_width="fill_parent" android:layout_marginTop="2dp" android:layout_marginLeft="5dp" android:layout_marginRight="8dp" >
<TextView
android:text="Timesheet Details"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow android:layout_width="fill_parent" android:layout_marginLeft="1dp">
<TextView
android:text="Emp Name"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13dp"
/>
<EditText android:text="EditText" android:id="@+id/emp_name" android:enabled="false" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="13dp"
></EditText>
<EditText android:text="EditText" android:id="@+id/emp_code" android:enabled="false" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="13dp"
></EditText>
</TableRow>
<TableRow android:layout_width="fill_parent" android:layout_marginLeft="1dp">
<TextView
android:text="From Date"
android:id="@id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13dp"
/>
<EditText android:text="EditText" android:id="@+id/from_date" android:enabled="false" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="13dp"
></EditText>
</TableRow>
<TableRow android:layout_width="fill_parent" android:layout_marginLeft="1dp">
<TextView
android:text="To Date"
android:id="@id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13dp"
/>
<EditText android:text="EditText" android:id="@+id/to_date" android:enabled="false" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="13dp"
></EditText>
</TableRow>
<TableRow android:layout_width="fill_parent" android:layout_marginLeft="1dp">
<TextView
android:text="Target Hrs"
android:id="@id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13dp"
/>
<EditText android:text="EditText" android:id="@+id/target_hours" android:enabled="false" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="13dp"
></EditText>
<TextView
android:text="Actual Hrs"
android:id="@id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13dp"
/>
<EditText android:text="EditText" android:id="@+id/actual_hours" android:enabled="false" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="13dp"
></EditText>
</TableRow>
</TableLayout>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1" android:layout_marginTop="600dp" android:layout_marginLeft="1dp" android:layout_width="400dp" android:layout_height="wrap_content"
>
<TableRow android:layout_width="fill_parent" android:layout_marginLeft="1dp">
<Button android:id="@+id/approve" android:layout_width="wrap_content" android:layout_height="22dp" android:background = "@drawable/approve" android:textColor="#ffff" android:layout_marginLeft="30dp" ></Button>
<Button android:id="@+id/reject" android:layout_width="wrap_content" android:layout_height="22dp" android:background = "@drawable/reject" android:textColor="#ffff" android:layout_marginLeft="50dp" android:layout_marginRight="20dp" ></Button>
<Button android:id="@+id/detail" android:layout_width="wrap_content" android:layout_height="22dp" android:background = "@drawable/details" android:textColor="#ffff" android:layout_marginLeft="30dp" android:layout_marginRight="30dp"></Button>
</TableRow>
</TableLayout>
</LinearLayout>
</ScrollView>
您可以将列表视图上方的两个
表格布局
添加为列表视图的标题视图
,将列表视图下方的两个表格布局
添加为列表视图的页脚视图
大概是这样的:
标题视图:
ListView.addHeaderView(HeaderView);
ListView.addFooterView(FooterView);
页脚视图:
ListView.addHeaderView(HeaderView);
ListView.addFooterView(FooterView);
删除
滚动视图
。现在,您的布局将与列表一起滚动,而不带任何滚动视图您可以将列表视图上方的两个表格布局
添加为列表视图的标题视图
,将列表视图下方的两个表格布局
添加为列表视图的页脚视图
大概是这样的:
标题视图:
ListView.addHeaderView(HeaderView);
ListView.addFooterView(FooterView);
页脚视图:
ListView.addHeaderView(HeaderView);
ListView.addFooterView(FooterView);
删除滚动视图
。现在,您的布局将与列表一起滚动,而没有任何滚动视图
您不能在滚动视图
中使用列表视图
,除非您实现自己的滚动视图
并处理触摸事件
我看到您希望整个页面都可以滚动,这样当您向下滚动时,表格最终将退出屏幕。要实现这一点,您需要
删除滚动视图
将表放在另一个xml文件中
在listview上使用addHeaderView(视图v)
方法,并将表添加到listview中
listview.addeaderView(tableView);
除非实现自己的滚动视图
并处理触摸事件,否则不能在滚动视图
中使用列表视图
我看到您希望整个页面都可以滚动,这样当您向下滚动时,表格最终将退出屏幕。要实现这一点,您需要
删除滚动视图
将表放在另一个xml文件中
在listview上使用addHeaderView(视图v)
方法,并将表添加到listview中
listview.addeaderView(tableView);
根据UI指南和最佳实践,建议不要在Scrollview中使用可滚动内容,这样做可以防止可滚动内容的滚动
当你放置两个scrollview时,android会搞不清楚哪个scrollview被触动了。因此,有时它无法传递触摸事件
但是,如果仍然想要实现滚动功能,可以使用特定视图的onTouch事件来管理它。您需要相应地设计布局
但即使需求迫使您进行这样的布局。试试这个
比如说案例有点像这样
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ScrollView
android:id="@+id/svssvMain"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="20sp"
android:layout_margin="10dp"
android:text="@string/tv_content"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<ListView
android:id="@+id/svslvMain"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:cacheColorHint="#00000000"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="20sp"
android:layout_margin="10dp"
android:text="@string/tv_content"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<ScrollView
android:id="@+id/svssvchild"
android:layout_width="fill_parent"
android:layout_height="100dp">
<TextView
android:id="@+id/svstvContent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_margin="10dp"
android:text="@string/lipsum"/>
</ScrollView>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="20sp"
android:layout_margin="10dp"
android:text="@string/tv_content"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/android"/>
</LinearLayout>
</ScrollView>
步骤3:现在为列表视图
和滚动视图
设置触摸监听器
我希望它能帮助你 根据UI指南和最佳实践,建议不要在Scrollview中使用可滚动内容,这样做可以防止可滚动内容的滚动
当你放置两个scrollview时,android会搞不清楚哪个scrollview被触动了。因此,有时它无法传递触摸事件
但是,如果仍然想要实现滚动功能,可以使用特定视图的onTouch事件来管理它。您需要相应地设计布局
但即使需求迫使您进行这样的布局。试试这个
比如说案例有点像这样
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ScrollView
android:id="@+id/svssvMain"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="20sp"
android:layout_margin="10dp"
android:text="@string/tv_content"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<ListView
android:id="@+id/svslvMain"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:cacheColorHint="#00000000"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="20sp"
android:layout_margin="10dp"
android:text="@string/tv_content"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<ScrollView
android:id="@+id/svssvchild"
android:layout_width="fill_parent"
android:layout_height="100dp">
<TextView
android:id="@+id/svstvContent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_margin="10dp"
android:text="@string/lipsum"/>
</ScrollView>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="20sp"
android:layout_margin="10dp"
android:text="@string/tv_content"/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/android"/>
</LinearLayout>
</ScrollView>
步骤3:现在为列表视图
和滚动视图
设置触摸监听器
我希望它能帮助你 将线性布局的方向设置为垂直
android:orientation="vertical"
移除
xmlns:android="http://schemas.android.com/apk/res/android"
从主滚动视图以外的其他布局
将listView包装到另一个线性布局中,并为其指定高度。
使用scrollView时,为什么要添加
android:stretchColumns="1"
android:scrollbars="vertical"
android:isScrollContainer="true"
android:scrollbarAlwaysDrawVerticalTrack="true"
到您的线性布局。将线性布局修改为:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
将线性布局的方向设置为垂直
android:orientation="vertical"
移除
xmlns:android="http://schemas.android.com/apk/res/android"
从主滚动视图以外的其他布局
将listView包装到另一个线性布局中,并为其指定高度。
使用scrollView时,为什么要添加
android:stretchColumns="1"
android:scrollbars="vertical"
android:isScrollContainer="true"
android:scrollbarAlwaysDrawVerticalTrack="true"
到您的线性布局。将线性布局修改为:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
scrollview不能像预期的那样与listview一起工作,因为listview已经包含scrollviewlistview是一个复杂的控件,在滚动中进行了一些优化。如果你把它放在滚动视图中,所有的优化都将消失!因此,考虑更改您的设计。ScLabVIEW不像ListVIEW那样工作,因为ListVIEW已经包含ScRelVIEWSListVIEW是一个复杂的控件,在滚动中有一些优化。如果你把它放在滚动视图中,所有的优化都将消失!所以考虑改变你的设计。