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