1

我有一个非常烦人的问题,就是让两个自定义视图一起工作。我试图在一个 android 活动中显示这两个视图,但其中一个占据了活动的整个可视空间,另一个放在它下面。第一个视图只使用了一小部分空间,其余部分是透明的,但它仅在其宽度和高度为 at 时才起作用,match_parent因此另一个视图显示在其下方,但它被阻止接收任何触摸事件。这是它们的样子:

1

2

xml代码:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_app" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <com.fortysevendeg.android.swipelistview.SwipeListView
        xmlns:swipe="http://schemas.android.com/apk/res-auto"
        android:id="@+id/example_lv_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:listSelector="#00000000"
        swipe:swipeActionLeft="dismiss"
        swipe:swipeBackView="@+id/back"
        swipe:swipeCloseAllItemsWhenMoveList="true"
        swipe:swipeFrontView="@+id/front"
        swipe:swipeMode="both" 
        android:focusableInTouchMode="true"/>
</LinearLayout>

<com.touchmenotapps.widget.radialmenu.semicircularmenu.SemiCircularRadialMenu
        android:id="@+id/radial_menu"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="bottom"
        android:padding="1dip" />
</FrameLayout>

我正在尝试做的是能够触摸顶部视图透明的底部,并且能够触摸不透明的顶部视图。我尝试以不同的方式排列 xml,但它一直在崩溃,这是它工作的唯一方式,但出现了这个问题。

自定义视图的链接:

  • 径向菜单小部件:github.com/strider2023/Radial-Menu-Widget-Android
  • SwipeListView 库:github.com/47deg/android-swipelistview
  • SwipeListView 示例:github.com/47deg/android-swipelistview-sample

我在这里想要完成的是类似于Catch Notes应用程序的东西。如果有其他方法或您可以建议的其他库,将不胜感激。

4

2 回答 2

1

好的试试这个:复制SemiCircularRadialMenu.class项目中的源代码并修改

public boolean onTouchEvent(MotionEvent event) 

因为这个方法总是返回 true 并捕获所有的触摸事件,所以SwipeListView监听器的触摸事件也是如此。我以这种方式解决了它。

于 2013-06-10T12:44:20.377 回答
0

一个老问题,但其他人可能会觉得这个答案很有帮助。如果不修改自定义视图的来源,我认为您无法获得所需的行为。但是让两个自定义视图在同一个屏幕上工作可能就像将根布局更改为 LinearLayout、向内部布局添加权重并将第二个自定义视图的高度设置为 wrap_content 一样简单。通过只有一个带有权重的小部件,它将在其他小部件布局后获得所有剩余空间。这是应用了更改的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background_app"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="100" >

        <com.fortysevendeg.android.swipelistview.SwipeListView
            xmlns:swipe="http://schemas.android.com/apk/res-auto"
            android:id="@+id/example_lv_list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:focusableInTouchMode="true"
            android:listSelector="#00000000"
            swipe:swipeActionLeft="dismiss"
            swipe:swipeBackView="@+id/back"
            swipe:swipeCloseAllItemsWhenMoveList="true"
            swipe:swipeFrontView="@+id/front"
            swipe:swipeMode="both" />
    </LinearLayout>

    <com.touchmenotapps.widget.radialmenu.semicircularmenu.SemiCircularRadialMenu
        android:id="@+id/radial_menu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:padding="1dip" />

</LinearLayout>

如果您需要第二个视图的高度更具可扩展性,您可以将其包装在另一个带有权重的 LinearLayout 中,并调整两个权重以在它们之间分配屏幕高度。单个重量值并不特殊;这是它们相对于所有重量总和的值,决定了每个人的身高。我喜欢让我的总值加起来为 100,这样我就可以将权重视为百分比。

于 2014-03-11T22:46:23.260 回答