【问题标题】:Add EditText and Spinner when button is clicked programmatically以编程方式单击按钮时添加 EditText 和 Spinner
【发布时间】:2014-02-20 09:33:04
【问题描述】:

所以我有一个类可以在按下按钮时动态添加文本字段和微调器。问题是添加的文本字段和按钮未正确对齐。它在彼此之上,但我希望它放在彼此旁边。我将方向设置为“水平”,但它不起作用。此外,项目列表不会显示给添加的微调器。有人能帮我吗?我是android开发的新手。谢谢你。这是我的代码。

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Spinner;

public class AddField extends Activity {

private LinearLayout mLayout, mLayout2;
private EditText qty, price ;
private Button mButton;
private Spinner mspinner;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_field);

    final List<String> list=new ArrayList<String>();

    list.add("Male");
    list.add("Female");


 final String[] str={"Male","Female"};

    mspinner = (Spinner)  findViewById(R.id.itemSpin);
    ArrayAdapter<String> adp1=new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,list);
adp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mspinner.setAdapter(adp1);



    mLayout = (LinearLayout) findViewById(R.id.linearLayout);
    mLayout2 = (LinearLayout) findViewById(R.id.linearLayout);





    qty = (EditText)  findViewById(R.id.inputQty);

    price = (EditText)  findViewById(R.id.inputPrice);

    mButton = (Button) findViewById(R.id.button);
    mButton.setOnClickListener(onClick());





}

private OnClickListener onClick() {
return new OnClickListener() {

@Override
public void onClick(View v) {
     mLayout2.addView(createNewSpin(mspinner.getContext().toString()));
    mLayout2.addView(createNewQty(qty.getText().toString()));
    mLayout2.addView(createNewPrice(price.getText().toString()));

}
};
}

private Spinner createNewSpin(String text) {


final LayoutParams lparams = new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

final  Spinner spinner = new Spinner(this);
spinner.setLayoutParams(lparams);

return spinner;
}

private EditText createNewQty(String text) {


    final LayoutParams lparams = new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

    final  EditText editText = new EditText(this);
    editText.setLayoutParams(lparams);
    editText.setHint("Quantity");
    return editText;
}


private EditText createNewPrice(String text) {
final LayoutParams paramss = new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,       RelativeLayout.LayoutParams.WRAP_CONTENT);

final  EditText editText2 = new EditText(this);
editText2.setLayoutParams(paramss);
editText2.setHint("Price");
return editText2;
}

【问题讨论】:

    标签: android android-edittext spinner add


    【解决方案1】:

    您能展示一下您的导入部分吗?我想你应该在实例化视图之前创建LinearLayout.LayoutParams 对象并将ViewGroup.LayoutParams.WRAP_CONTENT 传递给构造函数。

    UPD。 删除import android.app.ActionBar.LayoutParams 并只使用LinearLayout.LayoutParams 类,因为您以编程方式将视图添加到LinearLayout。在此之后尝试将布局方向设置为水平。 此外,当您在 createNewSpin 方法中创建微调器时,您应该将适配器设置为它。更好的方法是在活动类中创建一个私有字段mSpinnerAdapter,并在onCreate 时实例化一次。然后每个新的createnewSpin 调用只需设置此适配器:spinner.setAdapter(mSpinnerAdapter);,您将在您创建的每个微调器中获得列表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 2013-10-09
      • 2017-06-17
      • 2013-05-23
      • 1970-01-01
      相关资源
      最近更新 更多