0

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

无论如何,在我的情况下它是不同的 - 问题:

我有一个视图,其中显示了一些信息,也有一些操作。这是一个示例屏幕:

在此处输入图像描述

Email1 是放置在 ListView 中的 ListItem。Homepage 也是放置在第二个 ListView 中的 ListItem。(我使用了 ListViews,因为我无法像使用 ListItem 和 ListViews 那样设置按钮样式 - 另一个原因是,我可以显示 Second Mail: Email2 if exists

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

<ScrollView>(父)--> <LinearLayout>(子父)--> <LinearLayout>-->((它描述了电子邮件,或“Sonstiges”,与主页)--> <ListView>(这里是列表视图)..

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

在此处输入图像描述

在这里,我用黄色标记了它,是我可以单击 ListItem 的地方。它只显示了一点点,甚至无法显示第三个项目:

在此处输入图像描述

我尝试的是删除 ScrollView。好吧,现在它向我展示了第二个项目,但是在整个视图中,我需要滚动,因为信息和操作比我在一个“页面”上看到的要多。

一些 axml(它的“Aktionen”,来自屏幕上方),其余的看起来完全像这样:

   <?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 本身的 Style 不是必需的。我把它改成了LinearLayout、FrameLayout、RelativeLayout,它总是一样的。

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

4

2 回答 2

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;
}

在执行第一个触摸事件后,视图将获得焦点,这将接管滚动任务。

于 2013-01-21T14:32:03.640 回答
0

由于这似乎是一个已知问题,请参阅此处:Scrolling with Multiple ListViews for Android,我将自己回答这个问题。

至少我为每个元素使用了一个 ListView。这行得通,但它有点不友好,因为每个 ListView 现在只有一个 ListItem。

于 2013-01-21T14:29:30.120 回答