首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我制作的位图按钮java源码中找到布局的id

如何在我制作的位图按钮java源码中找到布局的id
EN

Stack Overflow用户
提问于 2015-07-10 17:29:27
回答 2查看 53关注 0票数 4

我做了一个在布局上有动画效果的位图按钮,但它找不到布局的id,它显示它指示空点

下面是我的源码

代码语言:javascript
复制
public class BitmapButton extends Button{

public BitmapButton(Context context) {
    super(context);
    init();
}

public BitmapButton(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

private void init(){
   setBackgroundResource(R.drawable.background_selector);

    setOnClickListener(new OnClickListener() {
        boolean selected=true;
        Animation anim;

        LinearLayout layout_search = (LinearLayout)findViewById(R.id.layout_search);

        @Override
        public void onClick(View v) {

            if(selected) {
                setSelected(true);
                anim = AnimationUtils.loadAnimation(getContext(), R.anim.translate_down);
                ***layout_search.startAnimation(anim);***
                layout_search.setVisibility(View.VISIBLE);
                selected =!selected;
            }
            else{
                setSelected(false);
                anim = AnimationUtils.loadAnimation(getContext(), R.anim.translate_up);
                layout_search.startAnimation(anim);
                layout_search.setVisibility(View.GONE);
                selected =!selected;
            }
        }
    });
}
}

========================================================================= layout_search.startAnimation(anim);

从这里开始就会说错了

java.lang.NullPointerException:尝试对null对象引用调用虚拟方法void android.widget.LinearLayout.startAnimation(android.view.animation.Animation)

我知道Button类中的findViewById方法与MainActivity中的方法不同,但我不知道如何找到LinearLayout linear_search??有了这个问题,我可以在这个按钮上做动画效果。请让我知道。

EN

回答 2

Stack Overflow用户

发布于 2015-07-10 18:29:26

代码语言:javascript
复制
    public class BitmapButton extends Button{

    public BitmapButton(Context context) {
        super(context);
        init();
    }

    public BitmapButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init(){
       setBackgroundResource(R.drawable.background_selector);

        setOnClickListener(new OnClickListener() {
            boolean selected=true;
            Animation anim;

          // _____________ just commented out this line ______________ 
  //  LinearLayout layout_search = (LinearLayout)v.findViewById(R.id.layout_search);
            @Override
            public void onClick(View v) {

    // i simply add this line here and add view v before findViewById
     LinearLayout layout_search = (LinearLayout)v.findViewById(R.id.layout_search);


                if(selected) {
                    setSelected(true);
                    anim = AnimationUtils.loadAnimation(getContext(), R.anim.translate_down);
                    ***layout_search.startAnimation(anim);***
                    layout_search.setVisibility(View.VISIBLE);
                    selected =!selected;
                }
                else{
                    setSelected(false);
                    anim = AnimationUtils.loadAnimation(getContext(), R.anim.translate_up);
                    layout_search.startAnimation(anim);
                    layout_search.setVisibility(View.GONE);
                    selected =!selected;
                }
            }
        });
    }
    }
票数 0
EN

Stack Overflow用户

发布于 2015-07-10 18:33:03

代码语言:javascript
复制
LinearLayout layout_search = (LinearLayout)findViewById(R.id.layout_search);

来自文档:

查找具有给定id的子视图。如果此视图具有给定的id,则返回此视图。

您正在尝试搜索布局内部按钮。如果要在按钮的父对象上启动动画,请尝试使用getParent().findViewById。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31337263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档