Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于服务器响应动态更改android中的按钮位置_Android_Android Relativelayout - Fatal编程技术网

基于服务器响应动态更改android中的按钮位置

基于服务器响应动态更改android中的按钮位置,android,android-relativelayout,Android,Android Relativelayout,从服务器上我得到了一个支付类型列表,如信用卡支付、PayPalCheckout、谷歌钱包。根据从服务器发送到列表中的顺序,屏幕上按钮的顺序将发生变化。有人能给点建议如何在屏幕上动态改变按钮的位置吗?你可以使用相对布局。并在代码中使用属性,如下面的RelativeLayout.,以便根据需要动态更改位置。 请检查链接 您需要动态创建布局,如下所示 public class MainActivity extends AppCompatActivity { Boolean button1ont

从服务器上我得到了一个支付类型列表,如信用卡支付、PayPalCheckout、谷歌钱包。根据从服务器发送到列表中的顺序,屏幕上按钮的顺序将发生变化。有人能给点建议如何在屏幕上动态改变按钮的位置吗?

你可以使用相对布局。并在代码中使用属性,如下面的
RelativeLayout.
,以便根据需要动态更改位置。 请检查链接

您需要动态创建布局,如下所示

public class MainActivity extends AppCompatActivity {
    Boolean button1ontop;
    Boolean button2ontop;
    Boolean button3ontop;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        button1ontop=false;
        button2ontop=true;
        button3ontop=false;
        //create new layout and set height and width
        RelativeLayout relativeLayout = new RelativeLayout(this);
        RelativeLayout.LayoutParams layoutParams= new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.MATCH_PARENT);
        //add buttons
        Button b1 = new Button(this);
        Button b2 = new Button(this);
        Button b3 = new Button(this);
        b1.setText("Button1");
        b1.setId(R.id.button1);
        b2.setId(R.id.button2);
        b3.setId(R.id.button3);
        b2.setText("Button2");
        b3.setText("Button3");
       // Toast.makeText(this,(b1.getId()),Toast.LENGTH_SHORT).show();
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);

        if(button1ontop){
            b1.setLayoutParams(lp);
            lp1.addRule(RelativeLayout.BELOW, R.id.button1);
            b2.setLayoutParams(lp1);
            lp2.addRule(RelativeLayout.BELOW,R.id.button2);
            b3.setLayoutParams(lp2);
        }
        else if(button2ontop){
            b2.setLayoutParams(lp);
            lp1.addRule(RelativeLayout.BELOW, R.id.button2);
            b1.setLayoutParams(lp1);
            lp2.addRule(RelativeLayout.BELOW,R.id.button1);
            b3.setLayoutParams(lp2);
        }
        else if(button3ontop){
            b3.setLayoutParams(lp);
            lp1.addRule(RelativeLayout.BELOW, R.id.button3);
            b1.setLayoutParams(lp1);
            lp2.addRule(RelativeLayout.BELOW,R.id.button1);
            b2.setLayoutParams(lp2);
        }
        relativeLayout.addView(b1);
        relativeLayout.addView(b2);
        relativeLayout.addView(b3);

        setContentView(relativeLayout, layoutParams);

    }



}
在res/values文件夹中创建文件ids.xml并定义id

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="button1" />
    <item type="id" name="button2" />
    <item type="id" name="button3" />

</resources>


根据您的要求修改此代码

是否要为其设置X和Y?不,它将类似于按钮w按钮X按钮Y按钮Z为什么不设置
按钮
文本动态替换按钮位置?在我的布局中,我添加了3个按钮布局。我想在代码中动态更改这些文件的显示顺序我的布局中有一个谷歌钱包的框架布局。我不能在代码中动态声明它。我只能在代码中获取对它的引用,然后动态地更改它的位置,但不确定在这里如何做