2011-10-12 96 views
1

我需要在垂直方向上获取LinearLayout中的动态添加视图位置。 例如,我在LinearLayout上动态添加了4个TextView,然后我需要在第三个位置更改文本颜色的位置,颜色将会不同。如何通过获取添加视图的位置来实现它。如何获取在LinearLayout上动态添加视图的位置

回答

1

你可以这样做就像是

ViewGroup parent; 
    int position; 

    for(int i = 0; i < parent.getChildCount(); ++i) { 
     int currentViewId = parent.getChildAt(i).getId(); 

     if(currentViewId == wantendViewId) { 
      position = i; 
     } 
    } 

这是(在我看来)最简单的方法

0

如果你总是知道TextViews在你的LinearLayout的数量,你可以使用函数getChildAt(int position) 。这会返回一个View,然后您可以将其转换为TextView以便能够执行所需的操作。

如果你不知道元素的数量,你可以设置每个TextView中的ID(为了能够识别特定的一个),然后运行通过他们这样的:

for(View view : myLinearLayout) 
    if(view instanceof TextView && view.getId().equals(idToSearchFor)) 
    //Do what needs to be done. 
0

我见下列选项:

  • 声明一些ID在资源的<item type="id">first</item>形式,并将其分配给 意见,增加布局,使用后正常findViewById()机制
  • 通过setTag方法,之后使用findViewWithTag机制的意见
  • Remeber位置分配一些标签的观点,你要添加到布局,并使用它们争夺getChildAt方法
0

我简单的选择。

假设你添加

视图V; //任何观点

linearlayout.addview(V); //添加布局

虽然ü要修改视图。

simpaly删除旧视图。

linearlayout.removeView(v);

添加新的更新视图对象

V-更新的新视图

linearlayout.addview(V);

相关问题