android 从线性布局获取子视图

android get childview from Linearlayout

我尝试创建我自己的 PinView.i 创建它但我有一个 problem.i 试图解释我的问题 我创建了四个文本视图并将其添加到 Linearlayout 中,这个线性布局添加了我的容器(布局 我有我的 xml 文件)。现在我想从我的 fontainer.this 中获取我的子视图是一个结构我的观点

<container>
<wapContainer>
<Textview>


</Textview>
</wapContainer>
<container>

这是我的来源

private void addView( final LinearLayout childView) {
    // Add a digit view for each digit

    inputValue.setBackgroundColor(getResources().getColor(android.R.color.transparent));
    inputValue.setTextColor(getResources().getColor(android.R.color.transparent));
    inputValue.setCursorVisible(false);


    inputValue.setFilters(new InputFilter[]{new InputFilter.LengthFilter(mDigits)});
    inputValue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

    inputValue.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
    inputValue.setOnFocusChangeListener(new OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // Update the selected state of the views
            int length = inputValue.getText().length();
            for (int i = 0; i < mDigits; i++) {
                childView.getChildAt(i).setSelected(hasFocus && (mAccentType == ACCENT_ALL ||
                        (mAccentType == ACCENT_CHARACTER && (i == length ||
                                (i == mDigits - 1 && length == mDigits)))));
            }

            if (mOnFocusChangeListener != null) {
                mOnFocusChangeListener.onFocusChange(CustomPinConfirmView.this, hasFocus);
            }
        }
    });

    for (int i = 0; i < mDigits; i++) {
        DigitView digitView = new DigitView(getContext());
        digitView.setLayoutParams(new LinearLayout.LayoutParams(valueInPixels, valueInPixels));
        wapContainer = new LinearLayout(mContext);
        wapContainer.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 5f / mDigits));
        wapContainer.setGravity(Gravity.CENTER);
        digitView.setTextColor(Color.WHITE);
        digitView.setTextSize(pxFromDp(14, mContext));

        digitView.setGravity(Gravity.CENTER);
        mWidgets.add(digitView);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            digitView.setElevation(mDigitElevation);
        }
        wapContainer.addView(digitView);
        childView.addView(wapContainer);
    }




    inputValue.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {

            int length = s.length();
            for (int i = 0; i < mDigits; i++) {
                if (s.length() > i) {
                    String mask = mMask == null || mMask.length() == 0 ?
                            String.valueOf(s.charAt(i)) : mMask;

                    if(childView.getChildAt(i) instanceof  LinearLayout)
                    {
                        Log.e("Taggggggggggg",childView.getChildCount() +"");
                        Log.e("Taggggggggggg",childView.getClass().getSimpleName() + " " + childView.getClass().getSimpleName().length());
                        //((TextView) childView.getChildAt(i)).setText(mask);
                    }
                }
                else {

                }

            }

        }
    });
}

如您所见,我可以记录我的 wapContainer 我以编程方式创建但我不能(我不知道)如何获取 wapContainer 的 childView(我的文本视图) 如果有人知道解决方案请帮助我 谢谢大家

通常的做法是为您的 textView 设置一个 ID。

然后使用 findViewById() 获取对它的引用。

希望对您有所帮助。