Android布局问题,ScrollView中的几个ListView

时间:2013-01-21 11:31:23

标签: android listview layout styles scrollview

首先 - 我知道,我不应该将ListView放入ScrollView,因为ListView负责自己的垂直滚动。

无论如何,就我而言,情况有所不同 - 问题:

我有一个视图,我在其中显示一些信息,还有一些动作。 这是一个示例屏幕:

enter image description here

Email1是放置在ListView中的ListItem。 Homepage也是放在第二个ListView中的ListItem。 (我使用了ListViews,因为我无法使用ListItem和ListViews这样的样式按钮 - 另一个原因是,我可以显示第二个邮件:Email2如果存在

反正。现在的问题是,布局看起来像这样:

<ScrollView>(家长) - &gt; <LinearLayout>(SubParent) - &gt; <LinearLayout> - &gt; ((它描述了电子邮件,或#34; Sonstiges&#34;,与主页) - &gt; <ListView>(这里是ListView)..

我遇到的问题是,当使用ScrollView时,它会切掉第二个元素,我看不清楚,看看这里:

enter image description here

在这里,我用黄色标记它,是我可以点击ListItem的地方..它只显示一点点,第三项甚至不能显示:

enter image description here

我尝试删除ScrollView。那么现在它向我显示第二个项目很好,但在整个视图中,我需要滚动,因为有更多的信息和动作,而不是我在一个&#34; Page&#34;。

一些axml(它的&#34; Aktionen&#34;,来自上部屏幕)其余的看起来完全像这样:

   <?xml version="1.0" encoding="utf-8"?>
    <ScrollView
      style="@style/ScrollView"
      xmlns:local="http://schemas.android.com/apk/res/INMobileCRM4Android.INMobileCRM4Android"
        xmlns:android="http://schemas.android.com/apk/res/android">
      <LinearLayout style="@style/LinearLayout">
        <LinearLayout style="@style/LinearLayoutSmall">
          <TextView
            style="@style/TextAktionen"   
            android:text="Aktionen" />
          <Mvx.MvxBindableListView
            local:MvxBind="{'ItemsSource':{'Path':'ActionsList'},'ItemClick':{'Path':'ActionCommand'}}"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:cacheColorHint="#00000000"
            local:MvxItemTemplate="@layout/addressshowdataactionlistitem"/>
        </LinearLayout>
      </LinearLayout>
    </ScrollView>

风格:

  <style name="LinearLayout" parent="android:Theme">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>
    <item name="android:orientation">vertical</item>
    <item name="android:background">@string/backgroundPicture</item>
  </style>
    <style name="LinearLayoutSmall" parent="android:Theme">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:orientation">vertical</item>
  </style>
    <style name="ScrollView" parent="android:Theme">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
  </style>

ListItem的样式本身并不是必需的。 我把它改为LinearLayout,FrameLayout,RelativeLayout,它总是一样的。

我希望有人可以帮助我..

2 个答案:

答案 0 :(得分:1)

我设法修复了我的TimePicker问题,这可能对你和你的ListViews有效。基本上他们都想要相同的东西,控制你的触摸事件,所以你必须覆盖你的Java文件。

我是通过在单独的Java文件中创建自定义TimePicker,然后在XML中将其作为视图调用来实现此目的。

也许您可以创建自定义ListView,然后在文件末尾调用以下代码:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

    // Stop ScrollView from getting involved once you interact with the View
    if (ev.getActionMasked() == MotionEvent.ACTION_DOWN)
    {
        ViewParent p = getParent();
        if (p != null)
            p.requestDisallowInterceptTouchEvent(true);
    }
    return false;
}

在执行第一次触摸事件后,View将获得焦点,并将接管Scroll职责。

答案 1 :(得分:0)

因为它似乎是一个已知问题,请看这里:Scrolling with Multiple ListViews for Android,我将自己回答这个问题。

至少我为每个Element使用了ListView。这是有效的,但它有点unnicely因为每个ListView现在只有一个ListItem。