使用布局充气器创建自定义菜单,如何引用每个组件?

时间:2016-07-12 13:01:18

标签: android android-layout layout-inflater

这是我正在膨胀的项目:

<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);

如果我三次夸大以下项目,创建三个菜单项 - 我将如何单独引用每个项目?

例如,如果我想在菜单的第一项中更改帐户名称的文本,我将如何在菜单的第一项而不是第二项或第三项中引用它?

2 个答案:

答案 0 :(得分:3)

  

如果我三次充气以下项目,请创建三个菜单   项目 - 我将如何单独引用每个项目?

使用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);

以相同方式访问其他视图。

答案 1 :(得分: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 ");

如果您的布局位于活动xml内,则应该访问textview,如下所示:

TextView textview = (TextView) findViewById(R.id.balance_text_view);

 textview.setText("sadsasa ");