2016-12-04 42 views
0

我试过使用以下博客的代码展开ListView方法,https://wirasetiawan29.wordpress.com/2016/01/20/membuat-expand-listview-material-design-di-android/展开ListView添加按钮时不工作

一切工作正常。但是,如果我在FrameLayout中添加一个按钮,那么listview项目的touchevent将无法正常工作。我也尝试将FrameLayout更改为相对&也是Linear,但仍然没有成功。

<FrameLayout 
    android:id="@+id/wrapper" 
    android:layout_below="@+id/rl_title_wrapper" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.AppCompatTextView 
     android:id="@+id/deskripsi" 
     android:padding="16dp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:text="Share"/> 
</FrameLayout> 

在此先感谢。

回答

0

据帧布局description by Google's documentation ...

的FrameLayout被设计为阻挡的区域在屏幕上显示 单个项目。一般来说,FrameLayout应该用于保存子视图,因为可以很难以 的方式组织子视图,这种方式可以扩展到不同的屏幕尺寸,而不需要儿童 彼此重叠。但是,您可以使用android:layout_gravity 属性将多个孩子添加到FrameLayout中,并将其在FrameLayout中的位置控制为 ,以便为每个孩子分配重力。

因此,您的原始TextView实际上是由按钮(共享)重叠。您可以使用android:layout_gravity =“right”将按钮定位在屏幕的右端,但是,您将不得不修复TextView的字符串的最大长度,以免它被按钮在右边。

如果您没有任何问题,我可以建议您使用LinearLayout吗? GPU处理和渲染更容易(据我所知)。以下是您的项目的示例代码...

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/wrapper" 
android:layout_below="@+id/rl_title_wrapper" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
> 
<TextView 
    android:id="@+id/deskripsi" 
    android:padding="16dp" 
    android:layout_weight="1" 
    android:layout_gravity="left|center" 
    android:text="This is a big chunk of description for your listView item. you can write as much as you want...." 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Share" 
    android:layout_gravity="right|center"/> 
</LinearLayout> 

您也可以在这里使用RelativeLayout和GridLayout。 我希望它能回答你的问题。干杯!

+0

我已经试过这个,也有相对布局,但没有成功。 –

+0

你现在得到什么? –

+0

用于listview项目的touchevent不能正常工作 –