【问题标题】:Issue with dynamically adding textview android动态添加textview android的问题
【发布时间】:2013-07-29 04:46:32
【问题描述】:

我有一个包含提交按钮的可扩展列表视图。单击提交按钮时,应在前一个之前创建一个文本视图。我尝试使用下面的代码..但它没有正确显示。正确添加了两个文本视图,但此后它替换了旧的文本视图。请告诉我我的代码有什么问题

   imGbtn.setOnClickListener(new OnClickListener() {                
            public void onClick(View v) {
    int prevTextViewId = 0;
    int curTextViewId = prevTextViewId + 1;
    Random rnd = new Random();
    final TextView textView = new TextView(mContext);
    textView.setText(data);     
    textView.setId(curTextViewId);
    final RelativeLayout.LayoutParams params = 
    new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,       RelativeLayout.LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.BELOW, textView.getId());
    textView.setLayoutParams(params);
    tvll.addView(textView, params);
    }
    });

【问题讨论】:

  • 我认为线性布局会帮助你而不是相对
  • 考虑不要动态添加元素,而是将其包含在布局标记中,默认情况下只是隐藏。然后,在您的点击处理程序中,您可以找到隐藏元素,填充它的文本并将visibility 设置为visible

标签: android expandablelistview textview


【解决方案1】:

看起来您正在尝试将视图设置为低于自身:

params.addRule(RelativeLayout.BELOW, textView.getId());

我认为您希望它是这样的:(假设您希望它高于,正如您在问题中所说)

params.addRule(RelativeLayout.ABOVE, prevTextViewId);

您还需要在此方法之外跟踪您的 prevTextViewId。让它成为你课堂的一部分。

int prevTextViewid = 0; //part of your class
   ...

   imGbtn.setOnClickListener(new OnClickListener() {                
       public void onClick(View v) {
       int curTextViewId = prevTextViewId + 1;
       Random rnd = new Random();
       TextView textView = new TextView(mContext);
       textView.setText(data);     
       textView.setId(curTextViewId);
       RelativeLayout.LayoutParams params = 
          new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
       params.addRule(RelativeLayout.BELOW, prevTextViewId );
       textView.setLayoutParams(params);
       tvll.addView(textView, params);
       prevTextViewId = curTextViewId;
   }
});

【讨论】:

  • hmm 尝试了你的建议 ..但我没有任何方法 :( 覆盖现有的 ..prevTextViewId 的问题(初始化/增量)
【解决方案2】:

通过查看您的 tvll,您似乎已经为 textview 采用了线性布局,所以 试试这个-

imGbtn.setOnClickListener(new OnClickListener() {                
        public void onClick(View v) {
  int prevTextViewId = 0;
  int curTextViewId = prevTextViewId + 1;
  Random rnd = new Random();
  final TextView textView = new TextView(mContext);
  textView.setText(data);     
  textView.setId(curTextViewId);
  final LinearLayout.LayoutParams params = 
  new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);

  textView.setLayoutParams(params);
  tvll.addView(textView, params);
}
});

【讨论】:

  • 你拿了什么LL或RL?
【解决方案3】:
    protected void addTextView() {
    int prevId = 1;
    for (int m = 1; m <= 3; m++) {
        TextView textView = new TextView(this);
        textView.setText("TextView  : " + m);
        textView.setId(m);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.BELOW, prevId);
        textView.setLayoutParams(params);
        relative.addView(textView);
        prevId = m;
    }
}

m 在循环中添加 thm ...您可以用自己的方式实现...这仅使用相对布局...

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多