如何获取布局对象
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
, RelativeLayout
或 ConstraintLayout
布局
示例代码
<?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);
。
我正在关注 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
, RelativeLayout
或 ConstraintLayout
布局
示例代码
<?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);
。