微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java-向片段动态添加按钮

我一直在尝试向片段动态添加按钮,但是我尝试过的所有方法都不起作用.

这些是我尝试过的一些方法

1.

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

LinearLayout linearlayout = new LinearLayout(getActivity());

        LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);

        linearlayout.setLayoutParams(buttonParams);
        linearlayout.setorientation(LinearLayout.HORIZONTAL);

        Button button = new Button(getActivity());
        button.setLayoutParams(buttonParams);
        button.setText("????????????????????");
        button.setTextSize(16);

        Button button2 = new Button(getActivity());
        button2.setLayoutParams(buttonParams);
        button2.setText("!!!!!!!!!!!!!!!!!!");
        button2.setTextSize(64);

        linearlayout.addView(button);
        linearlayout.addView(button2);

        container.addView(linearlayout);
        View myView = inflater.inflate(R.layout.fragment_general_layout, container, false);

 return myView;

    }

这将为我提供以下屏幕截图First method.
我真的不喜欢这样,因为这会在Activity本身上创建一个按钮,该按钮会出现在使用相同Activity的其他片段上.

>第二种方法

公共视图onCreateView(LayoutInflater充气器,@ Nullable ViewGroup容器,捆绑保存的InstanceState){

View myView = inflater.inflate(R.layout.fragment_general_layout, container, false);


            for (int i = 0; i < ArrayOfNames.length; i++) {

                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.MATCH_PARENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);

                Button btn = new Button(myView.getContext());
                btn.setId(i);
                final int id_ = btn.getId();
                btn.setText(ArrayOfNames[i]);
                btn.setBackgroundColor(Color.CYAN);
                btn.setLayoutParams(params);
                linearlayout.addView(btn, params);
                btn = myView.findViewById(id_);

                btn.setVisibility(View.VISIBLE);

                btn.setonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                            //do smth


                    }
                });
return myView;
}

我假设此方法将使按钮(因为代码运行良好,并且至少在设置OnClickListner()时按钮没有空指针引用.但是我无法在屏幕上看到实际的按钮.而且,无法单击它.

我试图从这些参考
网址:Programmatically add buttons to a Fragment

Adding buttons programmatically to a fragment

How to add a button programmatically to a fragment

任何帮助将不胜感激.

解决方法:

onCreateView方法期望您返回正在放大的视图.您的代码不错,但是您将按钮添加到了错误的视图.尝试以下方法

//container.addView(linearlayout);
myView = inflater.inflate(R.layout.fragment_general_layout, container, false);
myView.addView(linearlayout);

这应该将按钮添加到视图中.我假设您的R.layout.fragment_general_layout是一个带有direction =“ vertical”的LinearLayout

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐