有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将textview放置在相对布局的任意位置?

我面临的问题是如何在相对布局中动态地将文本视图放置在random position上。textview的总数可以是1、3、4。。。或者30岁。它取决于数组列表

我想把text view randomly in relative layout。请引导我去实现它


共 (2) 个答案

  1. # 1 楼答案

    我建议你下一个方法:

    RelativeLayout relativeLayout = findViewById(R.id.relativeLayout);
    Random random = new Random();
    int num_textViews= 10;
    for (int i = 0; i < num_textViews; ++i) {
        TextView textView = new TextView(this);
        textView.setX(random.nextInt(relativeLayout.getMeasuredWidth()));
        textView.setY(-random.nextInt(relativeLayout.getMeasuredHeight()));
        relativeLayout.addView(textView);
    }
    
  2. # 2 楼答案

    试试这个:

       TextView textView = findViewById(R.id.textView);
        Random random = new Random();
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
    
        int random_width = random.nextInt(metrics.widthPixels - 
        textView.getWidth());
        int random_height = random.nextInt(metrics.heightPixels - 
        textView.getHeight());
    
        if (random_width > (metrics.widthPixels - 100)) {
            random_width -= 100;
        }
    
        if (random_height > (metrics.heightPixels - 200)) {
            random_height -= 200;
        }
        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
        layoutParams.width = metrics.widthPixels;
        layoutParams.height = metrics.heightPixels;
    
        layoutParams.setMargins(random_width, random_height, 0, 0);
        textView.setLayoutParams(layoutParams);
    
    
        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
        layoutParams.width = metrics.widthPixels;
        layoutParams.height = metrics.heightPixels;
    
    
        layoutParams.setMargins(random_width, random_height, 0, 0);
        textView.setLayoutParams(layoutParams);
    

    在xml中:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/mRelativeLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"       
        tools:context=".MainActivity">
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="HI"
            android:textColor="#ff9999" />
    
    
    </RelativeLayout>