如何在运行时显示多张图片(转到下一行)

时间:2019-06-15 23:29:31

标签: java android imageview

我有一个相当奇怪的应用程序,在该应用程序中,我将在运行时获得单词/符号,并且不会提前知道它们。我需要显示它们,并在文本太宽时无法自动换行。

我不太确定应该在功能上使用哪种布局,但是任何提示将不胜感激。如果可以将它们添加到名片视图中,然后让其整理包装,那就太好了。有办法吗?

下面的代码应该显示“这是一个在运行时动态组合在一起的句子”。

example output

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <android.support.v7.widget.CardView
        android:id="@+id/card"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:cardCornerRadius="40dp"
        android:layout_centerHorizontal="true"
        android:innerRadius="0dp"
        android:shape="ring"
        android:thicknessRatio="1.9"
        app:contentPadding="13dp"
        >


            <LinearLayout
                android:id="@+id/layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"

                android:orientation="horizontal">

            </LinearLayout>

    </android.support.v7.widget.CardView>

</android.support.constraint.ConstraintLayout>

MainActivity.java

        LinearLayout ll = (LinearLayout)findViewById(R.id.layout);

        ImageView ivThis = new ImageView(MainActivity.this);
        ivThis.setImageResource(R.drawable.word_this);
        ll.addView(ivThis);

        ImageView ivIs = new ImageView(MainActivity.this);
        ivIs.setImageResource(R.drawable.word_is);
        ll.addView(ivIs);

        ImageView ivA = new ImageView(MainActivity.this);
        ivA.setImageResource(R.drawable.word_a);
        ll.addView(ivA);

        ImageView ivSentance = new ImageView(MainActivity.this);
        ivSentance.setImageResource(R.drawable.word_sentance);
        ll.addView(ivSentance);

        ImageView ivPut = new ImageView(MainActivity.this);
        ivPut.setImageResource(R.drawable.word_put);
        ll.addView(ivPut);

        ImageView ivTogether = new ImageView(MainActivity.this);
        ivTogether.setImageResource(R.drawable.word_together);
        ll.addView(ivTogether);

        ImageView ivDynamically = new ImageView(MainActivity.this);
        ivDynamically.setImageResource(R.drawable.word_dynamically);
        ll.addView(ivDynamically);

        ImageView ivAt = new ImageView(MainActivity.this);
        ivAt.setImageResource(R.drawable.word_at);
        ll.addView(ivAt);

        ImageView ivRuntime = new ImageView(MainActivity.this);
        ivDynamically.setImageResource(R.drawable.word_runtime);
        ll.addView(ivRuntime);

2 个答案:

答案 0 :(得分:1)

  

我有一个很奇怪的应用程序,在其中我会得到文字/符号   在运行时,不会提前知道它们。我需要显示它们,   当文字太宽而无法显示时,请自动换行。

听起来像您正在寻找RecyclerView来动态显示数据(在运行时)。

答案 1 :(得分:1)

希望这可以帮助其他人。以下是我获得所需功能的方式。

Gradle

dependencies {
    implementation 'com.google.android:flexbox:1.1.0'
}

XML

<com.google.android.flexbox.FlexboxLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:flexWrap="wrap"
    app:alignItems="stretch"
    app:alignContent="stretch" >

</com.google.android.flexbox.FlexboxLayout>