如何定位动态添加的子文本视图和图像视图?

时间:2016-03-21 18:32:48

标签: android view

好的,有很多问题,但大多数都是旧的或每种情况都是独一无二的。

我有这个布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
    android:gravity="center"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:id="@+id/phaseParent">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="01"
    android:textSize="16sp"
    android:layout_marginLeft="-20dp"
    android:id="@+id/phaseNumbers"/>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/state_bubble"
            android:id="@+id/phaseBubbles"/>
        <View
            android:background="@color/verticalLine"
            android:layout_width="70dp"
            android:layout_height="2dp"
            android:layout_marginTop="15dp"
            android:id="@+id/break1"/>
    </RelativeLayout>

</LinearLayout>

根据列表中的项目总数动态添加到此父级:

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:id="@+id/phaseListItems"
                        android:gravity="center">

                    </LinearLayout>

现在选择我抓住这样的项目并激活它

 for(int i = 0; i < totalPhases; i++) {
        if(i != phasePosition){

            phaseListItems.getChildAt(i).setActivated(false);

            View child = phaseListItems.getChildAt(i);


        }
    }

现在我抓住View就像这样,此时想要改变文本颜色,大小如果可能的话TextView phaseNumbers和相位泡影的ImageView中的图片大小...我正在为孩子尝试instanceOf但是难以正确实施它,请允许我知道谢谢!

问题: 如何在动态添加的线性布局中定位子textview和imageview?

1 个答案:

答案 0 :(得分:2)

您可以使用findViewById抓取TextView。 在你的循环中

TextView tvPhaseNumbers  =  (TextView)child.FindViewById(R.id. phaseNumbers)

然后你可以在tvPhasesNumbers上应用你需要的任何东西。