【问题标题】:How do I know which dynamic Toggle Button was clicked in android我怎么知道在android中点击了哪个动态切换按钮
【发布时间】:2016-02-08 01:13:41
【问题描述】:

我正在 android 中动态创建 10 个 editText 和 10 个 Toggle Button。 我已经完成了这部分,但我希望它有更多的进步。 sn-p 是这样的:

for(int i =0 ; i < 10; i++) {
     et=new EditText(context);
     et.setLayoutParams(lprams); 
     et.setKeyListener(null);
     et.setClickable(true);
     et.setId(1); 
     et.setText(lwfb.get(i));
     et.setFocusableInTouchMode(true);
     final ToggleButton tb = new ToggleButton(context);
     tb.setTextOn("ON");
     tb.setTextOff("OFF");
     tb.setChecked(true);
     tb.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

     ll.addView(et);
     ll.addView(tb);

     tb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             if(tb.isChecked()){
                 //Button is ON
             } else {
                 //Button is OFF
             }    
        }
    });
}

其中ll 是动态LinearLayout 变量。

我想实现两件事:

  1. 在同一行显示相同索引的编辑文本和切换按钮。
  2. 代替//Button is ON/OFF,我想显示button [i] is ON/OFF

【问题讨论】:

  • 没有得到 EditText 和 ToggleButton 在同一行?
  • 投反对票的人给出你投票的理由。
  • @ρяσѕρєяK : 在同一行显示 EditText 和 ToggleButton,就像在相对布局中一样。
  • 现在谁能帮我解决第一个问题。

标签: android dynamic android-edittext android-togglebutton


【解决方案1】:

ll 可能具有垂直方向,这意味着添加到布局中的项目将在另一个下显示。要将EditTextToggleButton 放在同一行,您必须将它们放在另一个布局中——您可以使用另一个水平方向的LinearLayout。然后,不要将EditTextToggleButton 直接添加到ll,而是将它们添加到这个新布局,然后将这个新布局添加到ll

LinearLayout line = new LinearLayout(context);
line.setOrientation(LinearLayout.HORIZONTAL);
line.addView(et);
line.addView(tb);
ll.addView(line);

您可能还想设置布局参数和其他东西来进行一些对齐。

【讨论】:

    【解决方案2】:

    您可以将tag 添加到您创建的视图中,并使用它来识别您的按钮。

    private static final int TAG_KEY_POS = R.id.someid;
    
    ...
    tb.setTag(TAG_KEY_POS, i);
    ...
    

    您可以稍后检索该值

    (Integer) view.getTag(TAG_KEY_POS);
    

    【讨论】:

    • Rudiger ~ 报错,View类型中的setTag(int,Object)方法不适用于参数(String,int)
    • 很好@Rudiger。但是现在我遇到了一个运行时异常,键必须是应用程序特定的资源 id。
    • 嘿,是的,注意到了。好的,您只需要使用资源标识符.. 大部分都足够了,例如您使用 +@id/.... 创建的按钮的名称。如果您想更具体,请查看:developer.android.com/guide/topics/resources/…
    • 感谢@Rudiger,这就像一个魅力!在 values 文件夹中创建了一个文件 tags.xml,内容为 schemas.android.com/apk/res/android"> 并作为 R.id.TAG_KEY_POS 访问它.它成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2021-12-01
    相关资源
    最近更新 更多