以编程方式按顺序创建按钮

时间:2016-08-16 17:53:10

标签: android android-layout

我想解析文字,并为每个单词创建 - 按钮,但我不知道如何一个接一个地安排它们

String s = "Alice was beginning to get very tired of sitting";
String[] q = s.split(" ");
for (int i = 0; i < q.length; i++) {
    Button myButton = new Button(this);
    myButton.setText(q[i]);

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout1);
    layout.addView(myButton, params);

}

img

4 个答案:

答案 0 :(得分:2)

请参阅此自定义库:FlowLayout

当您在FlowLayout内添加视图时,如果下一个项目没有空间,它会自动换行。

答案 1 :(得分:2)

你的方法没有太大的错误,只有function deleteFile(filename){ DitFactory.getFile(filename).then(function(response,$window){ console.log('data for download', response); var data = JSON.stringify(response.data); var blob = new Blob([data], { type: 'text/plain;charset=utf-8' }); FileSaver.saveAs(blob, 'server.log'); socket.emit('stopRecording',$scope.filename); }); } 顾名思义要求子视图有一些参数来对齐相对于它们的视图,例如因此,您将获得彼此重叠的视图,因此只有最后添加的视图在顶部可见。

改为使用relative layout,你会没事的。

答案 2 :(得分:0)

您需要定义RelativeLayout参数,如下面的示例

  

下面是一个让你入门的例子,请填写其他内容:

TextView tv = new TextView(mContext);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
params.leftMargin = 107
...
mRelativeLayout.addView(tv, params);
     

RelativeLayout.LayoutParams和构造函数的文档是   here

     

来自:How to add a view programmattically to RelativeLayout?

检查以下链接以获取更多有用的信息。

希望它会有所帮助

答案 3 :(得分:0)

在以下代码中,您应该将for的上限更改为变量。

public class MainActivity
        extends Activity
        implements View.OnClickListener {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            TableLayout layout = new TableLayout (this);
            layout.setLayoutParams( new TableLayout.LayoutParams(4,5) );

            layout.setPadding(1,1,1,1);

            for (int f=0; f<=13; f++) {
                TableRow tr = new TableRow(this);
                for (int c=0; c<=9; c++) {
                    Button b = new Button (this);
                    b.setText(""+f+c);
                    b.setTextSize(10.0f);
                    b.setTextColor(Color.rgb( 100, 200, 200));
                    b.setOnClickListener(this);
                    tr.addView(b, 30,30);
                } // for
                layout.addView(tr);
            } // for

            super.setContentView(layout);
        } // ()

        public void onClick(View view) {
            ((Button) view).setText("*");
            ((Button) view).setEnabled(false);
        }
    } // class