2

我已经在android activity.java文件中以编程方式创建了edittexts。我想为edittext添加textinputlayout。有没有办法做到这一点。我已将edittext包装在xml文件中。我希望对以编程方式创建的edittext执行相同的操作。text以编程方式创建的edittexts的输入布局

在此先感谢。

public class FirstFragment extends Fragment { 


     EditText emailText; 
     EditText passText; 
     Button loginButton; 
     TextView registerView; 
     int counter=0; 


    public FirstFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 


     View view = inflater.inflate(R.layout.fragment_first, container, false); 
     emailText = (EditText) view.findViewById(R.id.emailText); 
     passText = (EditText) view.findViewById(R.id.passwordText); 
     loginButton = (Button) view.findViewById(R.id.LoginButton); 
     registerView = (TextView) view.findViewById(R.id.RegisterView); 



     final TextInputLayout nameText = new TextInputLayout(getActivity()); 
     final TextInputLayout DeptText = new TextInputLayout(getActivity()); 
     final EditText phoneNumber = new EditText(getActivity()); 
     final Button registerButton = new Button(getActivity()); 
     final LinearLayout layout = (LinearLayout)view.findViewById(R.id.fragmentLayout); 
     phoneNumber.setInputType(InputType.TYPE_CLASS_PHONE); 
     LinearLayout.LayoutParams parameters1 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) ; 
     nameText.setLayoutParams(parameters1); 
     DeptText.setLayoutParams(parameters1); 
     phoneNumber.setLayoutParams(parameters1); 
     LinearLayout.LayoutParams parameters2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) ; 
     parameters2.gravity = Gravity.CENTER; 
     registerButton.setLayoutParams(parameters2); 
     nameText.setHint("Enter Name"); 
     DeptText.setHint("Enter Department"); 
     phoneNumber.setHint("Enter Phone Number"); 
     registerButton.setText("Register"); 
     registerView.setTextColor(Color.BLUE); 
     registerView.setTextSize(17); 



     registerView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 



       counter++; 
       if(counter==1) { 
        layout.addView(nameText,1); 
        layout.addView(DeptText, 2); 
        layout.addView(phoneNumber,3); 
        layout.removeView(loginButton); 
        layout.addView(registerButton,5); 
        registerView.setText("Already signed Up? login"); 
       } 
       else{ 
        layout.removeView(nameText); 
        layout.removeView(DeptText); 
        layout.removeView(phoneNumber); 
        layout.removeView(registerButton); 
        layout.addView(loginButton,2); 
        registerView.setText("New User? Sign Up"); 
        counter=0; 

       } 


      } 
     }); 
    return view; 
    } 


} 
+1

关闭袖口,创建一个'TextInputLayout'的实例,然后调用'addView()'来添加'EditText'。尝试了 – CommonsWare

+0

。它不工作。编辑文本在运行时不显示 –

+1

然后请提供一个[mcve]来演示您的问题。 – CommonsWare

回答

1

您可以从充气XML文件布局是这样的:

创建布局资源

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.TextInputLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.design.widget.TextInputEditText 
     android:inputType="phone" 
     android:hint="change hint" 
     android:id="@+id/text_input_edit_text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</android.support.design.widget.TextInputLayout> 

然后在你的代码膨胀,这

TextInputLayout txtInputLayout = (TextInputLayout) LayoutInflater.from(getActivity()).inflate(R.layout.text_input_layout,null); 
TextInputEditText txtInputEditText = (TextInputEditText) txtInputLayout.findViewById(R.id.text_input_edit_text); 
mRoot.addView(txtInputLayout); 
0

尝试text_input_layout.xml将TextInputLayout视为EditText字段的包装,例如:

LinearLayout assessmentLayout = (LinearLayout) findViewById(R.id.assessmentsLayout); 
    LinearLayout.LayoutParams layoutParams = 
      new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT); 
    assert assessmentLayout != null; 

    TextView screenTitle = new TextView(this); 
    screenTitle.setLayoutParams(layoutParams); 
    screenTitle.setText(String.format("Assessment: %s", course.getName())); 
    assessmentLayout.addView(screenTitle); 

    TextInputLayout titleWrapper = new TextInputLayout(this); 
    titleWrapper.setLayoutParams(layoutParams); 
    titleWrapper.setHint("Assessment Title:"); 
    assessmentLayout.addView(titleWrapper); 

    title = new EditText(this); 
    title.setLayoutParams(layoutParams); 
    title.setText(assessment.getTitle()); 
    titleWrapper.addView(title); 

    TextInputLayout descriptionWrapper = new TextInputLayout(this); 
    descriptionWrapper.setLayoutParams(layoutParams); 
    descriptionWrapper.setHint("Description:"); 
    assessmentLayout.addView(descriptionWrapper); 

    description = new EditText(this); 
    description.setLayoutParams(layoutParams); 
    description.setText(assessment.getDescription()); 
    descriptionWrapper.addView(description); 

您将EditText视图添加到TextInputLayout包装而不是直接添加到活动布局。

相关问题