如何从 Android 中的特定视图创建克隆?
How to create a clone from specific a view in Android?
如何克隆布局中特定视图的属性?
我有这个看法
<com.google.android.material.textview.MaterialTextView
android:id="@+id/fragment_login_main_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="25dp"
android:fontFamily="@font/font_en_medium"
android:gravity="center"
android:text="@string/fragment_login_main_text"
android:textColor="@color/fragment_login_text1_main_text"
android:textSize="22.5sp" />
我想创建此视图的克隆,我就是这样做的
MaterialTextView materialTextView = fragmentLoginBinding.fragmentLoginMainText;
materialTextView.setId(View.NO_ID);
fragmentLoginBinding.getRoot().addView(materialTextView);
但是我遇到了这个错误
Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
所以我想知道是否有任何方法可以从该视图创建克隆,而无需像这样手动执行
MaterialTextView materialTextView = new MaterialTextView(requireActivity());
materialTextView.setText(fragmentLoginBinding.fragmentLoginMainText.getText());
materialTextView.setTypeface(fragmentLoginBinding.fragmentLoginMainText.getTypeface());
materialTextView.setTextSize(fragmentLoginBinding.fragmentLoginMainText.getTextSize());
etc...
fragmentLoginBinding.getRoot().addView(materialTextView);
您不能复制现有视图,系统不能那样工作。但是,如果视图在 xml 中,您可以扩充一个新副本。 LayoutInflater.from(context).inflate(layoutId, fragmentLoginBinding.getRoot())
将它膨胀并将其添加到该父级。如果您不想扩充整个 xml 文件,那么您可能需要将其拆分为自己的 xml 文件,并使用 <include>
标签将一个文件包含到另一个文件中
如何克隆布局中特定视图的属性?
我有这个看法
<com.google.android.material.textview.MaterialTextView
android:id="@+id/fragment_login_main_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="25dp"
android:fontFamily="@font/font_en_medium"
android:gravity="center"
android:text="@string/fragment_login_main_text"
android:textColor="@color/fragment_login_text1_main_text"
android:textSize="22.5sp" />
我想创建此视图的克隆,我就是这样做的
MaterialTextView materialTextView = fragmentLoginBinding.fragmentLoginMainText;
materialTextView.setId(View.NO_ID);
fragmentLoginBinding.getRoot().addView(materialTextView);
但是我遇到了这个错误
Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
所以我想知道是否有任何方法可以从该视图创建克隆,而无需像这样手动执行
MaterialTextView materialTextView = new MaterialTextView(requireActivity());
materialTextView.setText(fragmentLoginBinding.fragmentLoginMainText.getText());
materialTextView.setTypeface(fragmentLoginBinding.fragmentLoginMainText.getTypeface());
materialTextView.setTextSize(fragmentLoginBinding.fragmentLoginMainText.getTextSize());
etc...
fragmentLoginBinding.getRoot().addView(materialTextView);
您不能复制现有视图,系统不能那样工作。但是,如果视图在 xml 中,您可以扩充一个新副本。 LayoutInflater.from(context).inflate(layoutId, fragmentLoginBinding.getRoot())
将它膨胀并将其添加到该父级。如果您不想扩充整个 xml 文件,那么您可能需要将其拆分为自己的 xml 文件,并使用 <include>
标签将一个文件包含到另一个文件中