0

我是 android 新手。当我试图使屏幕可滚动时,屏幕变得可滚动但内容未显示。屏幕包含一个列表视图和另一个表视图。这是我正在使用的代码。

     <?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>
4

4 回答 4

2

您可以将列表视图的两个上方添加tablelayout为列表视图,将列表视图下方的两个添加为Header View列表ListView视图。tablelayoutfooter view

像这样的东西:

标题视图:

ListView.addHeaderView(HeaderView);

页脚视图:

ListView.addFooterView(FooterView);

删除scrollview. 现在您的布局将使用列表滚动而没有任何scrollview.

于 2013-05-02T05:26:39.257 回答
1

除非您实现自己的并处理触摸事件,否则您不能使用 a 的ListView内部。ScrollViewScrollview

我看到您希望整个页面都可以滚动,这样当您向下滚动表格时,表格最终会离开屏幕。为了实现这一目标,您需要

  1. 删除滚动视图。
  2. 将您的表放在另一个 xml 文件中。
  3. 在您的列表视图上使用该addHeaderView(View v)方法并将表格添加到列表视图。

    listview.addeaderView(tableView);
    
于 2013-05-02T05:29:16.820 回答
0

将线性布局的方向设置为垂直。

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">
于 2013-05-02T05:51:39.863 回答
0

根据 UI 指南和最佳实践,建议不要在 Scrollview 中使用 Scrollable 内容,这样做会阻止 Scrollable 内容的滚动。

当您放置两个滚动视图时,android 会混淆哪个滚动视图被触摸。所以有时它无法传递触摸事件。

但是,如果您仍然想实现滚动功能,您可以通过使用特定视图的 onTouch 事件来管理它。你需要相应地设计你的布局。

但即使要求迫使您进行此类布局。试试这个……</p>

说情况有点像这样......

  <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&的参考。ListView

     m_lvMain = (ListView) findViewById(R.id.svslvMain);
   m_svMain = (ScrollView) findViewById(R.id.svssvMain);
   m_svchild = (ScrollView) findViewById(R.id.svssvchild);

Listview第 3 步:现在为和设置触摸侦听器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;
        }
    });

我希望它会帮助你。

于 2013-05-02T05:38:54.953 回答