2012-02-12 38 views
2

我有一个带有自定义视图的LinearLayout。 veiw比布局小1px。 我想要布局改变它的背景颜色,当按下视图或获得聚焦。带选择器和自定义视图的LinearLayout顶部

我已经实现了与布局的drawables的选择器,并且当我点击布局时,它全部变成了wroking。但是因为只有1 px的可点击空间,所以我希望自己的自定义视图能够更改下面的布局的相关属性。

有什么办法可以做到吗?如果布局未定制,自定义视图是否可以将evnet分派给parrent布局?

我可以很容易地改变背景颜色的布局,只需通过访问它的父母点击视图时,但我希望backgroud颜色为shor时间转而回到它的默认颜色。与ListView项目一样。

感谢

回答

1

在ui线程中创建处理程序,作为顶部的全局处理。

Handler handler = new Handler();

然后用它来改变你的布局颜色回:

handler.postDelayed(new Runnable() 
    { 
     @Override 
     public void run() 
     { 

     } 
    }, 1000); 
+0

嗨诺亚感谢代码,它看起来非常整齐。我认为不适用这种选择。谢谢你们俩。 – IronHide 2012-02-13 15:03:59

1

我猜你想改变背景颜色或图片仅供点击您的自定义视图很短的时间。如果这是问题,您可以在自定义视图的onClick()中调用以下方法

public void changeBg(){ 
    LinearLayout layout=(LinearLayout) findViewById(R.id.your_Layout_id); 
    Drawable temp=layout.getBackground(); 
    layout.setBackgroundResource(R.drawable.your_drawable); 
    try{ 
     Thread.sleep(2000); 
    }catch(Exception ex){} 
    layout.setBackgroundDrawable(temp); 
} 

我认为这是您正在搜索的内容。

+0

您好感谢答复。我知道这个选择,但我想使用。 Thread.sleep不是在主UI线程中使用的最佳选择。对不起,我没有提到,这一切都在我的主UI线程中。 – IronHide 2012-02-13 08:22:42

+0

我可能会使用线程和处理程序,并将布局传递给处理程序,并在那里更改背景一秒。但是我想我可以使用线程或处理程序。 – IronHide 2012-02-13 08:29:56

+0

我不认为有没有其他的方式来做到这一点,而不使用线程或处理程序。 – noob 2012-02-13 12:19:57