简体   繁体   English

Android使其他布局的视图膨胀

[英]Android inflating views from other layouts

I'm relatively new to android development and I'm trying to find a way to inflate a view repeatedly each time when a button is pressed, in a different location, so every inflated view has its own position: 我是android开发的新手,我试图找到一种方法,每次在不同的位置按下按钮时,都可以反复为视图充气,因此每个充气的视图都有自己的位置:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class teamCreateScreen extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.team_locate_layout);
}
public void createTeam(View view) {
    final RelativeLayout rlTeam = (RelativeLayout) findViewById(R.id.rlTeam);
    View teamBox = View.inflate(this, R.layout.team_box, rlTeam);

    final TextView teamBoxView = (TextView) findViewById(R.id.team_task_box);
    teamBoxView.setX(0);
    teamBoxView.setY(230);
}
}

The XML code of the layout: 布局的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rlTeam">

<Button
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:id="@+id/teamAddBtn"
    android:text="+"
    android:textSize="30sp"
    android:onClick="createTeam"/>

</RelativeLayout>

XML code of the view that's being inflated: 膨胀的视图的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:layout_width="192dp"
    android:layout_height="120dp"
    android:id="@+id/team_task_box"
    android:text="New Team" />

</RelativeLayout>

I want to use the same view to inflate multiple boxes with different coordinates in the layout. 我想使用同一视图为布局中不同坐标的多个框充气。 Every time I press the button to inflate the view again it inflates the box in the same coordinates so they overlap. 每次我按下按钮再次使视图膨胀时,都会以相同的坐标膨胀框,以便它们重叠。 I need to make the second box to appear to the first one's right, the third below 1st and so on, much like a grid of boxes. 我需要使第二个框显示在第一个框的右边,第三个框在第一个框的下面,依此类推,非常像一个网格框。

Try this code and tell me whether it works. 试试这个代码,告诉我它是否有效。 Remove the inflating of layout 消除布局膨胀

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class teamCreateScreen extends Activity {

int i=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.team_locate_layout);
}
public void createTeam(View view) {
   final RelativeLayout rlTeam = (RelativeLayout) findViewById(R.id.rlTeam);
   RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
   TextView tv=new TextView(getApplicationContext());
   if(tv.getId()>0) {
      relativeParams.addRule(RelativeLayout.BELOW, tv.getId());
   }
   tv.setId(i);
   r1Team.addView(tv, relativeParams);
   i++;
}
}

Declare int i=0; 声明int = 0; as a global variable and increment it in the createTeam() method. 作为全局变量,并在createTeam()方法中对其进行递增。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM