2012-10-24 30 views
1

我开发了一个可以具有图片和文本的按钮的自定义控件,因为我没有找到可以做到这一点的标准控件。它很好用,但我现在遇到的情况是,单击按钮时,textview不会将其状态更改为按下状态。我想要有这种行为,以便我可以为textview应用ColorStateList,以便按下按钮时文本颜色会发生变化。 这是自定义按钮的我的XML布局:Android:如何将状态从按钮链接到相同布局的textview状态

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/image_text_button" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center" 
    android:background="@drawable/btn_background" 
    android:visibility="visible" 

    > 

    <LinearLayout android:id="@+id/layoutContent" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center" 
     android:orientation="vertical" 
     android:padding="3dp" 
     android:duplicateParentState="true"> 

     <ImageView 
      android:id="@+id/imageView" 
      android:layout_width="wrap_content" 
      android:layout_height="0dp" 
      android:layout_weight="2" 
      android:duplicateParentState="true" 
      android:gravity="bottom|center_horizontal" 
      android:src="@drawable/testing_teaser1" 
      /> 

     <TextView 
      android:id="@+id/textField" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:duplicateParentState="true" 
      android:gravity="center" 
      android:text="This is a ImageTextButton" 
      android:textColor="@color/black" /> 


    </LinearLayout> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@drawable/btn_bg_selector" 
     /> 

</FrameLayout> 

我怎样才能TextView的链接到按钮的状态? android:duplicateParentState="true"不起作用,因为该按钮不是textview的父级。

干杯花花公子

回答

4

只需设置OnClickListenerLinearLayoutFrameLayout代替其设置为Button,在Button xml中,您还应该添加android:duplicateParentState="true"

+0

非常好的解决方案。奇迹般有效!但必须将Button设置为'android:clickable = false',以便它不拦截点击。 – Dude

1

你知道有一个小工具可以做到这一点吗? (ImageButton

如果你还想去您的自定义组件,您应该将“@绘制/ btn_bg_selector”分配给您的父母FrameLayout并作出布局clickable代替Button的。

+0

我可以将文本设置为图像下方显示的ImageButton? – Dude

-1

在XML为按钮添加属性

android:onClick="clickAction" 

和在活动包括以下功能

public void clickAction(View view){ 
    //Code whatever you want when the button is clicked 
}