动态添加的EditText在创建时不可见

时间:2017-07-25 16:26:23

标签: android xml dynamic android-edittext

我一直在阅读有关如何动态地将EditText字段添加到我的线性布局的信息,每次用户点击TextView(附加了onClick Listener)。

我取得了一些成功 - 我知道正在创建EditText字段,因为当单击按钮时,所有其他元素都会向上移动,好像有什么东西被添加到屏幕上一样。

我的问题是EditText不可见,我不知道为什么会这样,所以任何帮助都会受到赞赏。

应用程序没有崩溃所以没有任何东西可以添加StackTrace和Log,就应用程序而言,一切都在创建。

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/facebookBlue"
    android:orientation="vertical"
    android:weightSum="1"
    tools:context="com.test.practise.AddTeamMembers">


    <android.support.design.widget.TextInputEditText
        android:id="@+id/tv_teamNames"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="@string/teamName"
        android:textColor="@android:color/background_light"
        android:textColorLink="@android:color/background_light"
        android:textSize="30sp"
        android:textStyle="bold" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.26"
        android:orientation="vertical"
        android:weightSum="1">

        <TextView
            android:id="@+id/textView3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="0.47"
            android:gravity="center"
            android:text="Enter Player Names Below!"
            android:textColor="@android:color/background_light"
            android:textSize="24sp" />

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.16"
        android:orientation="vertical"
        android:weightSum="1">

        <EditText

            android:id="@+id/et_team_name1"
            android:layout_width="232dp"
            android:layout_height="37dp"
            android:layout_centerVertical="true"
            android:layout_gravity="center"
            android:background="@android:color/background_light"
            android:ems="10"
            android:hint="Team Name"
            android:imeOptions="actionDone"
            android:inputType="text"
            android:paddingLeft="70dp"
            android:singleLine="true"
            tools:layout_editor_absoluteX="76dp"
            tools:layout_editor_absoluteY="188dp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.16"
        android:orientation="vertical"
        android:weightSum="1">

        <EditText
            android:id="@+id/et_team_name2"
            android:layout_width="232dp"
            android:layout_height="37dp"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center"
            android:background="@android:color/background_light"
            android:ems="10"
            android:hint="Team Name"
            android:imeOptions="actionDone"
            android:inputType="text"
            android:paddingLeft="70dp"
            android:singleLine="true"
            tools:layout_editor_absoluteX="76dp"
            tools:layout_editor_absoluteY="188dp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.16"
        android:orientation="vertical"
        android:weightSum="1">

        <EditText
            android:id="@+id/et_team_name3"
            android:layout_width="232dp"
            android:layout_height="37dp"
            android:layout_gravity="center"
            android:background="@android:color/background_light"
            android:ems="10"
            android:hint="Team Name"
            android:imeOptions="actionDone"
            android:inputType="text"
            android:paddingLeft="70dp"
            android:singleLine="true"
            tools:layout_editor_absoluteX="76dp"
            tools:layout_editor_absoluteY="188dp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/editTextGroupLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"

        >
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.07"
        android:orientation="vertical"
        android:weightSum="1">

        <TextView
            android:id="@+id/tv_add_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="+ Add Name"
            android:textColor="@android:color/background_light"
            android:textSize="16dp" />

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:weightSum="1">

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@color/facebookBlue"
            android:gravity="center"
            android:text="Ready to join!"
            android:textColor="@android:color/background_light" />

     </LinearLayout>


     </LinearLayout>

     </ScrollView>

以下是调用上述XML的AddTeamMembers类

 public class AddTeamMembers extends Fragment implements 
 View.OnClickListener 
 {

private SharedPreferences pref;
private TextView tv_teamNames, tv_add_name;
private LinearLayout mLayout;






//The below method must be overridden in order to implement a fragment - 
  this changes the lifecycle method
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, 
   Bundle savedInstanceState) {


    View view = inflater.inflate(R.layout.activity_add_team_members, 
    container, false);
    initViews(view);
    return view;


   }


    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
    // 0, Sets Shared pref mode to private
    pref = getActivity().getPreferences(0);
    tv_teamNames.setText(pref.getString(Constants.Team_Name, ""));

   }


   private void initViews(View view) {

    tv_teamNames = (TextView) view.findViewById(R.id.tv_teamNames);
    tv_add_name = (TextView) view.findViewById(R.id.tv_add_name);

    mLayout = (LinearLayout) view.findViewById(R.id.editTextGroupLayout);

    tv_add_name.setOnClickListener(this);



  }

  @Override
   public void onClick(View view) {

    switch (view.getId()) {

        case R.id.tv_add_name:
            createEditTextView();
            break;


      }

   }

   @TargetApi(Build.VERSION_CODES.M)
   public void createEditTextView() {

    try{

        //dynamically create new EditText when user clicks to add another 
          name
        //target user using API 22 and above (lollipop and above)
        EditText editTextView = null;
        if (android.os.Build.VERSION.SDK_INT >= 
        android.os.Build.VERSION_CODES.M) {
            editTextView = new EditText(getContext());
        }else{
            Toast.makeText(getActivity(), "App is not supported on this 
        device",
                    Toast.LENGTH_LONG).show();
        }
        editTextView.setGravity(Gravity.CENTER);

        LinearLayout.LayoutParams params = new 
        LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT, 1);

        editTextView.setLayoutParams(params);

        mLayout.addView(editTextView);



        }catch(Exception e){
        Log.d(TAG, "Failed to create new edit text");
    }
   }
   }

[![Before Button is clicked][1]][1]
[![I have clicked 2 add 3 EditText here to make it obvious whats happening]
[2]][2]


[1]: https://i.stack.imgur.com/DGoPd.png
[2]: https://i.stack.imgur.com/3LWcY.png

0 个答案:

没有答案