Android -如何添加按钮以编程方式根据屏幕大小和 button 下面彼此动态吗?

发布时间: 2017/3/19 18:36:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我遇到一个小问题,使我 Android 的应用程序。 我想要一个响应和动力 application

当用户点击 button ,我想要添加 button 动态,这里是我的代码︰

 @Override
public boolean onOptionsItemSelected(MenuItem item) {


    switch (item.getItemId()) {
        case R.id.action_ajouter:

            Button b = new Button(this);


               //numButton counts the number of buttons created by
              //clicking on a button placed in the action bar

                if (numButton % 2 != 0) {
                    //Align to the left

                    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
                    b.setLayoutParams(params);
                    b.setText("Bouton n°" + numButton);
                    mainRelativeLayout.addView(b);
                    numButton++;

                } else {
                    //Align to the right
                    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
                    b.setLayoutParams(params);
                    b.setText("Bouton n°" + numButton);
                    mainRelativeLayout.addView(b);
                    numButton++;
                }

            break;
        default:
            break;
    }
    return true;


    }

我还需要添加 ScrollView 添加大量的按钮。

的问题是︰我需要两个按钮可以并排添加和其他的打击那些 (还并排)。问题是他们叠加他们和未添加下面别人。

解决方法 1:

你的按钮重叠每个别人因为你 layout 是不恰当的参数︰

params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
                b.setLayoutParams(params);
                b.setText("Bouton n°" + numBoutton);

与上面的代码,所有按钮会左都对齐与父。

如果你想要添加按钮旁边别人,你应该更好地使用 LinearLayout 而不是 RelativeLayout

假设您已经有一个线性 layout 与水平方向。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                b.setLayoutParams(params);
                b.setText("Bouton n°" + numBoutton);
                mainLinearLayout.addView(b);
                numBoutton++;

就这样。

编辑︰ 这里有一些代码,不知道这不是是您的需要。

在此应用程序,我有 LinearLayout 里面 ScrollViewButton 。当我点击 Button ,我添加新 buttonScrollView

MainActivity.java

package com.tiennt.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

    private LinearLayout llButtons;
    private int buttonCount;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnAdd = (Button) findViewById(R.id.btn_add);
        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                doAddButton();
            }
        });
        llButtons = (LinearLayout) findViewById(R.id.ll_buttons);
    }

    private void doAddButton() {
        Button button = new Button(this);
        button.setText("Button " + ++buttonCount);
        button.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        llButtons.addView(button);
    }
}

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.tiennt.myapplication.MainActivity">

    <Button
        android:id="@+id/btn_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ADD BUTTON"
        android:layout_gravity="center_horizontal" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/ll_buttons"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" />

    </ScrollView>

</LinearLayout>

这里是结果︰Result

官方微信
官方QQ群
31647020