Android:如何使用LinearLayout制作自定义按钮?

时间:2011-12-16 14:56:51

标签: android android-layout

我有layout以下ListView已被用作<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/schedule_row_content" android:background="@drawable/item_selector" android:layout_width="fill_parent" android:layout_height="60dp"> <TextView android:gravity="center_vertical|center_horizontal" android:layout_gravity="center_vertical" android:layout_height="wrap_content" android:textColor="#000000" android:id="@+id/labelLessonNumber" android:text="1" android:layout_width="27dp"></TextView> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="10px" android:layout_weight="1" android:layout_gravity="center_vertical"> <TextView android:layout_height="wrap_content" android:textColor="#000000" android:id="@+id/labelSubject" android:layout_width="fill_parent" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Text"></TextView> <TextView android:layout_height="wrap_content" android:textColor="#555555" android:layout_width="wrap_content" android:id="@+id/labelTime" android:text="00:00"></TextView> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent"> <TextView android:gravity="center" android:width="80dp" android:layout_gravity="center_vertical" android:layout_height="wrap_content" android:textColor="#000000" android:layout_width="wrap_content" android:id="@+id/labelGroup" android:textAppearance="?android:attr/textAppearanceSmall" android:text="Klasa Ia"></TextView> </LinearLayout> </LinearLayout> 的一行:

layout

我想使用此ListView创建自定义按钮(与onClick内部工作方式相同)。是否有任何容器从内部视图中捕获{{1}}个事件?

3 个答案:

答案 0 :(得分:1)

如果只需要点击按钮,那么一个简单直接的解决方案就是采用线性布局并将其背景设置为自定义选择器drawble,然后在java代码中简单地设置此线性布局的onclick监听器

Custom Selector link 1

Custom Selector link 2

在您的情况下,我们可以为所有列表项设置一个公共点击侦听器,但可以通过为所有列表项按钮设置不同的标记对象来区分。

我希望它有所帮助..

答案 1 :(得分:0)

我不确定您是否可以将布局用作自定义按钮,因为它的可点击标记应设置为true。如果这样做,它将捕获onClick事件,并且您将遇到ListView问题。尝试设置android:clickable =&#34; true&#34;你的布局和使用包括标签:

<include android:id="@+id/your_layout"
     layout="@layout/your_layout"
 android:layout_height="wrap_content"
 android:layout_width="fill_parent"/>

答案 2 :(得分:0)

无需将任何内容放入按钮,您需要可点击的布局,因此为此目的,只需使用它。

<LinearLayout
android:clickable="true"
android:background="@android:drawable/btn_default"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
    android:id="@+id/image"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:src="@android:drawable/ic_input_add"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</ImageView>
<TextView
    android:id="@+id/text"
    android:text="Sample text"
    android:textAppearance="?android:attr/textAppearanceButton"
    android:layout_toRightOf="@id/image"
    android:layout_centerVertical="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"></TextView>
</LinearLayout>

所以 android:clickable =“true”会使布局可点击,并且会像按钮一样运作:)希望这有用。