Android 顶部带有选择器和自定义视图的线性布局

Android 顶部带有选择器和自定义视图的线性布局,android,Android,我有一个线性布局,上面有一个自定义视图。纹理比布局小1倍。 我想改变布局的背景色时,视图被按下或获得焦点 我已经为布局实现了带有可绘制项的选择器,当我单击布局时,它都会被写入。但是因为只有1像素的可点击空间,我希望位于其上的自定义视图可以更改布局udernath的相关属性 我有办法做到吗?如果布局未自定义,自定义视图能否将EVNET分派到parrent布局 我可以通过编程轻松地更改视图所在布局的背景色,只要访问其父视图即可,但我希望背景色在短时间内改变并返回到默认颜色。与ListView项目类似

我有一个线性布局,上面有一个自定义视图。纹理比布局小1倍。 我想改变布局的背景色时,视图被按下或获得焦点

我已经为布局实现了带有可绘制项的选择器,当我单击布局时,它都会被写入。但是因为只有1像素的可点击空间,我希望位于其上的自定义视图可以更改布局udernath的相关属性

我有办法做到吗?如果布局未自定义,自定义视图能否将EVNET分派到parrent布局

我可以通过编程轻松地更改视图所在布局的背景色,只要访问其父视图即可,但我希望背景色在短时间内改变并返回到默认颜色。与ListView项目类似


谢谢

我想您只想在单击自定义视图后短时间内更改背景颜色或图像。如果这是问题所在,您可以在自定义视图的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);
}

我想这就是您正在搜索的内容。

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

Handler=newhandler()

然后使用将布局颜色更改回:

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

        }
    }, 1000);

你好,谢谢你的回复。我知道这个选择,但我认为使用。Thread.sleep不是在主UI线程中使用的最佳选项。很抱歉,我没有提到这些都在我的主UI线程中。我可能会使用线程和处理程序,将布局传递给处理程序,并在那里更改背景一秒钟。但是我认为我可以。做。这是不使用线程或处理程序。我不认为有任何其他方法可以不使用线程或处理程序。嗨,诺亚,谢谢你的代码。它看起来非常整洁。我想我会使用这个选项。谢谢你们两位。