如何获取在LinearLayout上动态添加的视图的位置

时间:2011-10-12 08:22:31

标签: android

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

4 个答案:

答案 0 :(得分:2)

你可以这样做

ViewGroup parent;
    int position;

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

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

那是(在我看来)最简单的方式

答案 1 :(得分:0)

如果您始终知道LinearLayout中TextView的数量,则可以使用函数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.

答案 2 :(得分:0)

我看到以下选项:

  • <item type="id">first</item>的形式在资源中声明一些id并将其分配给。{ 添加到布局的视图,之后使用普通findViewById()机制
  • 通过setTag方法为您要添加到布局的视图指定一些标记,然后使用findViewWithTag机制
  • 记住您的观点的位置,并使用getChildAt方法
  • 使用它们

答案 3 :(得分:0)

我有一个简单的选择。

假设您添加

查看v; //任何视图

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

虽然你想修改视图。

simpaly删除旧视图。

linearlayout.removeView(V);

添加新的更新视图对象

v-updated new view

linearlayout.addview(V);