如何获取布局对象

How to get layout object

我正在关注 this question 的公认答案:

ArrayList<EditText> myEditTextList = new ArrayList<EditText>();

for( int i = 0; i < myLayout.getChildCount(); i++ )
  if( myLayout.getChildAt( i ) instanceof EditText )
    myEditTextList.add( (EditText) myLayout.getChildAt( i ) );

如何得到myLayout,它究竟代表什么?在我的应用程序中,我在 activitymain.xml 中定义了 linear_layout 但似乎无法在 MainActivity.java 中获取它(我尝试使用 R 但它没有用)。我是 Android 开发的新手,确实可以使用一些高级指导。

您需要在 layout.xml 文件中使用 myLayout 作为根布局

myLayout 可能是 FrameLayout, LinearLayout, RelativeLayoutConstraintLayout 布局

示例代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/myLayout"
    android:orientation="vertical">

        <!-- add your view here-->

</LinearLayout>

现在在你的活动中findViewById

public class MyActivity extends AppCompatActivity {

    LinearLayout myLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        myLayout = findViewById(R.id.myLayout);
    }


}

让线性布局成为您 xml:

的根
<LinearLayout android:id="@+id/my_layout" >
   //your views goes here
</LinearLayout>

然后在您的 Activity 中,您必须在布局像这样膨胀后初始化视图

LinearLayout myLayout = (LinearLayout) findViewById(R.id.my_layout);

希望对您有所帮助。

您可以尝试使用以下代码在 Java 代码中获取您的 LinearLayout 的引用。

LinearLayout myLayout=(LinearLayout) findViewById(R.id.your_linear_layout_id)

假设您的 actiivtymain.xml 看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<SomeLayout
 android:id="@+id/some_id"
...>
 <EditText
...
/>

<EditText
...
/>
.
.
.
</SomeLayout>

mLayout 您所指的是您所有编辑文本的父级。它可能不是你布局的根,但如果你想获得它的 Java 实例,你需要给它一个 id。并使用@Nilesh Rathod 提供的代码获取实例。要记住的另一件事是仅在 setContentView(R.layout.activitymain); 之后调用方法 findViewById(R.id.my_layout);