我是android的新手。当我试图使屏幕可滚动时,屏幕变得可滚动但内容未显示。屏幕包含列表视图和另一个tableview。这是我正在使用的代码。
<?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>
答案 0 :(得分:2)
您可以将列表视图的两个上方tablelayout
添加为Header View
的{{1}},将列表视图下方的两个ListView
添加为tablelayout
列表视图。
这样的事情:
标题视图
footer view
页脚视图:
ListView.addHeaderView(HeaderView);
删除ListView.addFooterView(FooterView);
。现在,您的布局将滚动列表而不包含任何scrollview
。
答案 1 :(得分:1)
除非您实施自己的ListView
并处理触摸事件,否则无法在ScrollView
内使用Scrollview
。
我看到你希望整个页面可以滚动,这样当你向下滚动表格时最终会离开屏幕。为了实现这一目标,你需要
在列表视图中使用addHeaderView(View v)
方法,并将表格添加到列表视图中。
listview.addeaderView(tableView);
答案 2 :(得分:0)
根据UI指南和最佳实践,建议不要在Scrollview中使用Scrollable内容,这样做会阻止滚动Scrollable内容。
当您放置两个scrollview android时,只会感到困惑,哪个滚动视图被触摸。所以有时它无法提供触摸事件。
但是,如果您仍想实现滚动功能,则可以使用特定视图的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>
第1步:为两个滚动视图提供唯一ID。
第2步:获取前两个Scrollview
&amp;您活动中的ListView
。
m_lvMain = (ListView) findViewById(R.id.svslvMain); m_svMain = (ScrollView) findViewById(R.id.svssvMain); m_svchild = (ScrollView) findViewById(R.id.svssvchild);
第3步:现在为Listview
和ScrollView
设置触控侦听器。
m_svMain.setOnTouchListener(new View.OnTouchListener(){ public boolean onTouch(View p_v, MotionEvent p_event) { // Log.v(TAG, "PARENT TOUCH"); findViewById(R.id.svslvMain).getParent().requestDisallowInterceptTouchEvent(false); findViewById(R.id.svssvchild).getParent().requestDisallowInterceptTouchEvent(false); return false; } }); m_svchild.setOnTouchListener(new View.OnTouchListener(){ public boolean onTouch(View p_v, MotionEvent p_event) { // Log.v(TAG, "CHILD TOUCH"); // Disallow the touch request for parent scroll on touch of // child view p_v.getParent().requestDisallowInterceptTouchEvent(true); return false; } }); m_lvMain.setOnTouchListener(new View.OnTouchListener(){ public boolean onTouch(View p_v, MotionEvent p_event) { // Log.v(TAG, "CHILD TOUCH"); // Disallow the touch request for parent scroll on touch of // child view p_v.getParent().requestDisallowInterceptTouchEvent(true); return false; } });
我希望它会对你有所帮助。
答案 3 :(得分:0)
将线性布局的方向设置为垂直。
android:orientation="vertical"
并删除
xmlns:android="http://schemas.android.com/apk/res/android"
来自其他布局而不是主要的scrollview。
将listView包装到另一个线性布局中并为其指定高度。 当你使用scrollView时,为什么要添加
android:stretchColumns="1"
android:scrollbars="vertical"
android:isScrollContainer="true"
android:scrollbarAlwaysDrawVerticalTrack="true"
到您的线性布局。将linearlayout修改为:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">