【问题标题】:Creating multiple TextViews programmatically以编程方式创建多个 TextView
【发布时间】:2015-12-06 20:20:57
【问题描述】:

我刚刚进入 Android World,我正在使用 Android Studio 和一本书来入门,所以在阅读了一些章节之后,我想对刚刚阅读的内容进行一些练习。

我想创建一个简单的应用程序,它会要求您输入一个单词和一个数字,然后单击一个按钮后,您会看到一个包含您提交的单词的全新活动,并显示您之前所说的确切数量。

示例:Hello, 4 = Hello Hello Hello Hello(垂直)

所以我确实在主要活动中创建了这个方法:

public void submit(){

    EditText Edtword = (EditText) findViewById(R.id.text);
    EditText Edtnum = (EditText) findViewById(R.id.number);

    String word = Edtword.getText().toString();
    int num = Integer.parseInt(Edtnum.getText().toString());

    Intent intent = new Intent(this, display.class);
    intent.putExtra(display.EXTRA_MESSAGE, word);
    intent.putExtra("number", (int)num);
    startActivity(intent);
}

而这第二个 Activity 由一个按钮启动:

public class display extends AppCompatActivity {

public static final String EXTRA_MESSAGE = "word";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display);
    Intent intent = getIntent();

    String word = intent.getStringExtra(EXTRA_MESSAGE);
    int num = intent.getIntExtra("number", 0);


}

为了以编程方式创建这些 TextView,我应该在第二个活动中添加什么?我尝试了循环但无法成功。

谢谢

【问题讨论】:

  • 你不需要 4 个文本视图来显示 4 行文本。您只需在每个单词之间添加“\n”即可获得新行,它将适合单个 TextView
  • 好的,谢谢!但是现在以编程方式创建 TextView 的问题仍然存在
  • 如果您只需要一个,在 XML 中定义 TextView 会更简单。如果您真的必须以编程方式执行此操作,请查看此线程:stackoverflow.com/questions/3204852/…
  • 好的,如果我通过 XML 添加文本视图,那么如何在其中添加行?
  • 我应该使用 for 循环吗?那怎么办?

标签: android android-studio


【解决方案1】:

你可以像这样使用for循环,

for(i=1;i<=num;i++){
    txtView.append(word+"\n");
}

【讨论】:

    【解决方案2】:

    在您的第二个活动中,第一个您需要具有属性的 LinearLayout android:orientation="vertical" 在 AndroidManifest 文件中定义。 即:

    <LinearLayout 
            android:id="@+id/llMain"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical">
    </LinearLayout>
    

    那么就可以在java文件中编写如下代码:

    LinearLayout m_ll = (LinearLayout) findViewById(R.id.llMain);
            for(int i=0;i<num;i++)
            {
                TextView text = new TextView(this);
                text.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
                text.setText(""+i);
                m_ll.addView(text);
            }
    

    我仍然相信 Frank D. 建议的方法是最佳的,但这仅供您参考,希望对您有所帮助。 :)

    【讨论】:

    • 我认为这应该可以,但是当我在第二个 Activity 中添加这些行时,我需要进行一些具有多种选择的导入,我应该选择哪一个?
    • 你的意思是说你有一些数据的列表,你想在那些文本视图中显示它?
    • 完成,@AndroidWeblineindia
    • ohk... 它是 import android.view.ViewGroup.LayoutParams;
    • 我会试试的,顺便说一下,我想我的意图还有一个问题,一分钟后告诉你
    【解决方案3】:

    在您的情况下,我不会以编程方式添加 TextViews,这对于您的目标来说太复杂了。单个 TextView(只需在布局 XML 中定义)可以容纳多行文本。

    TextView yourTextView = (TextView) findViewById(R.id.textView); //however your textview is defined in your xml
    String word = "Hello";
    int num = 5; //or whatever value
    
    String multiLineText = ""; //empty at first
    for(int i = 0, i < num; i++){ 
       multiLineText = multiLineText + word + "\n";
    }
    
    yourTextView.setText(multiLineText);
    

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 2011-12-26
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多