我尝试使用以下博客https://wirasetiawan29.wordpress.com/2016/01/20/membuat-expand-listview-material-design-di-android/
中的代码展开ListView方法一切正常。但是如果我在FrameLayout中添加一个按钮,那么listview项目的touchevent将无法正常工作。我还尝试将FrameLayout更改为Relative&也是线性的,但仍然没有成功。
<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 :(得分:0)
根据框架布局description by Google's documentation ...
FrameLayout旨在阻挡屏幕上要显示的区域 单个项目。通常,FrameLayout应该用于保存单个 子视图,因为它可能很难组织子视图 在没有孩子的情况下可以扩展到不同屏幕尺寸的方式 相互重叠。但是,您可以将多个子项添加到a FrameLayout并控制它们在FrameLayout中的位置 使用android:layout_gravity为每个孩子分配重力 属性。
因此,您的原始TextView实际上是由Button(Share)重叠。您可以使用 android:layout_gravity =&#34;右键&#34; 将按钮放在屏幕的右端,但是,您必须为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。 我希望它能回答你的问题。干杯!