使用布局充气器创建自定义菜单,如何引用每个组件?
Creating a custom menu using a layout inflator, how do I reference each component?
这是我要充气的物品:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/background_border"
android:padding="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Account name"
android:textSize="25sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Balance: £61.43"
android:textSize="25sp"
android:paddingTop="40dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_keyboard_arrow_right_black_24dp"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"/>
</RelativeLayout>
我正在使用以下代码对其充气:
LinearLayout parent = (LinearLayout) findViewById(R.id.linearL);
view = getLayoutInflater().inflate(R.layout.menu_item, parent,false);
parent.addView(view);
假设我将以下项目膨胀三次,以创建三个菜单项 - 我将如何单独引用每个项目?
例如,如果我想更改菜单第一项中帐户名称的文本,我将如何引用它位于菜单的第一项,而不是第二项或第三项?
Say if I inflated the following item three times, to create three menu
items - how would I reference each item individually?
使用 parent.getChildCount()
和 parent.getChildAt()
从任何 R.layout.menu_item
布局访问视图,例如:
多次添加布局:
//First time
parent.addView(view);
//Second time
parent.addView(view);
获取第一个添加R.layout.menu_item
布局视图:
View firstView=parent.getChildAt(0);
以同样的方式获取 parent
布局的其他子视图。
使用 firstView
访问子视图:
如果添加到 xml 中查看 ID:
TextView textView=(TextView)firstView.findViewById(R.id.textViewID);
或使用getChildAt方法:
TextView textView=(TextView)firstView.getChildAt(0);
以同样的方式访问其他视图。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/background_border"
android:padding="10dp"
>
<TextView
android:id="@+id/account_name_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Account name"
android:textSize="25sp"/>
<TextView
android:id="@+id/balance_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Balance: £61.43"
android:textSize="25sp"
android:paddingTop="40dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_keyboard_arrow_right_black_24dp"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"/>
</RelativeLayout>
在代码中你会有类似
的东西
TextView textview = (TextView)relativeLayoutFromXml.findById(R.id.balance_text_view);
textview.setText("sadsasa ");
如果您的布局在 activity xml 内,您应该像这样访问文本视图:
TextView textview = (TextView) findViewById(R.id.balance_text_view);
textview.setText("sadsasa ");
这是我要充气的物品:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/background_border"
android:padding="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Account name"
android:textSize="25sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Balance: £61.43"
android:textSize="25sp"
android:paddingTop="40dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_keyboard_arrow_right_black_24dp"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"/>
</RelativeLayout>
我正在使用以下代码对其充气:
LinearLayout parent = (LinearLayout) findViewById(R.id.linearL);
view = getLayoutInflater().inflate(R.layout.menu_item, parent,false);
parent.addView(view);
假设我将以下项目膨胀三次,以创建三个菜单项 - 我将如何单独引用每个项目?
例如,如果我想更改菜单第一项中帐户名称的文本,我将如何引用它位于菜单的第一项,而不是第二项或第三项?
Say if I inflated the following item three times, to create three menu items - how would I reference each item individually?
使用 parent.getChildCount()
和 parent.getChildAt()
从任何 R.layout.menu_item
布局访问视图,例如:
多次添加布局:
//First time
parent.addView(view);
//Second time
parent.addView(view);
获取第一个添加R.layout.menu_item
布局视图:
View firstView=parent.getChildAt(0);
以同样的方式获取 parent
布局的其他子视图。
使用 firstView
访问子视图:
如果添加到 xml 中查看 ID:
TextView textView=(TextView)firstView.findViewById(R.id.textViewID);
或使用getChildAt方法:
TextView textView=(TextView)firstView.getChildAt(0);
以同样的方式访问其他视图。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/background_border"
android:padding="10dp"
>
<TextView
android:id="@+id/account_name_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Account name"
android:textSize="25sp"/>
<TextView
android:id="@+id/balance_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Balance: £61.43"
android:textSize="25sp"
android:paddingTop="40dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_keyboard_arrow_right_black_24dp"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"/>
</RelativeLayout>
在代码中你会有类似
的东西TextView textview = (TextView)relativeLayoutFromXml.findById(R.id.balance_text_view);
textview.setText("sadsasa ");
如果您的布局在 activity xml 内,您应该像这样访问文本视图:
TextView textview = (TextView) findViewById(R.id.balance_text_view);
textview.setText("sadsasa ");