Android编辑文本视图的麻烦

时间:2014-01-29 09:05:36

标签: android android-layout android-edittext

在我的应用程序中,按下“添加联系人”按钮后,电话簿会打开,然后用户选择在Edittext View中显示的联系人,当按下另一个按钮“添加更多联系人”时,另一个编辑文本视图显示在顶部,我可以再次从电话簿中选择联系人。但我面临的问题是我希望用户最多只能添加5个编辑文本。 我使用以下代码,但它强制崩溃应用程序。请帮忙。 而且我还希望编辑文本视图不可编辑,我尝试editable=false,但它只适用于第一个编辑文本视图而不是其他视图,用户之后添加。

int id = 1;


             layoutLinear = (LinearLayout) findViewById(R.id.mLayout);
                btn_addmore_cntct = (Button) findViewById(R.id.baddmorecontacts);
                btn_addmore_cntct.setOnClickListener(OnClick());
                EditText editview = new EditText(this);
                editview.setText("Add more");
                editview.setEnabled(false);
                editview.setFocusable(false);

            }

            // implementing OnClickListener OnClick() method for "btn_addmore_cntct"
            // button
            private OnClickListener OnClick() {
                // TODO Auto-generated method stub
                // changing return type "null" to "new OnClickListner"
                return new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub



                        if(layoutLinear.getChildCount()>5){

                        }else{
                            final EditText tab = new EditText(getApplicationContext());
                            tab.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
                            tab.setId(id);
                            id++;
        layoutLinear.addView(tab,0);
    tab.requestFocus();
                        }

2 个答案:

答案 0 :(得分:2)

只需检查layoutLinear孩子的号码

if(layoutLinear.getChildCount()>5){

     //nothing to do
}else{
  //create new EditText and add to layoutLinear
}

使用此代码禁用EditText

edittext.setEnabled(false);
edittext.setFocusable(false);

答案 1 :(得分:1)

您可以使用以下方式。

int temp;

public void onCreate(Bundle savedinstance) {  
    super.onCreate(savedinstance);  
    setContentView(R.layout.yourlayout);
    temp=1;
    layoutLinear = (LinearLayout) findViewById(R.id.mLayout);
    btn_addmore_cntct = (Button) findViewById(R.id.baddmorecontacts);
    btn_addmore_cntct.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
      if(temp<=5){
               EditText tab = new EditText(getApplicationContext());
               tab.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));  
               tab.setEnabled(false);
               tab.setFocusable(false);
               layoutLinear.addView(tab);
               temp++;
       }else{
           //Print message to user Cant add more editText.

        }

        }
    });
}

让我知道它的工作与否。