2011-12-16 114 views
2

我已经得到了以下的一段layout它已经作为一个排ListView的:Android:如何在内部使用LinearLayout制作自定义按钮?

<?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

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

Custom Selector link 1

Custom Selector link 2

在你的情况,我们可以发现点击听众共同所有列表项,但为所有列表项的按钮设置不同的标签对象区分。

我希望它有助于..

0

我不知道你是否可以使用你的布局,自定义按钮,因为它的可点击的标志应当设置为true。如果你这样做,它会捕获onClick事件,你将有问题与ListView。尝试设置机器人:可点击=“true”以你的布局和使用包括标签:

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

无需将任何东西放入按钮,你需要的可点击的布局INFACT,所以为了这个目的只是用这个。

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

所以机器人:可点击=“真”将使布局点击,并会像一个按钮:)希望这是很有帮助的。