我正在制作一个包含多个文本视图的网格布局。同样的xml代码是。
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alignmentMode="alignMargins"
android:background="@android:color/white"
android:columnCount="1"
android:columnOrderPreserved="false"
android:rowCount="1">
<LinearLayout
android:id="@+id/row1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
android:background="@android:color/white"
android:weightSum="5">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/background_black"
android:clickable="true"
android:gravity="center"
android:onClick="onClick"
android:textColor="@android:color/black"
android:textSize="32sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/background_black"
android:clickable="true"
android:gravity="center"
android:onClick="onClick"
android:textColor="@android:color/black"
android:textSize="32sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/background_black"
android:clickable="true"
android:gravity="center"
android:onClick="onClick"
android:textColor="@android:color/black"
android:textSize="32sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/background_black"
android:clickable="true"
android:gravity="center"
android:onClick="onClick"
android:textColor="@android:color/black"
android:textSize="32sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/background_black"
android:clickable="true"
android:gravity="center"
android:onClick="onClick"
android:textColor="@android:color/black"
android:textSize="32sp" />
</LinearLayout>
</GridLayout>
如你所见,我为每个文本视图定义了onClick方法。点击的处理方式是这样的。
public void onClick(View v) {
if (v instanceof TextView && isInitiatePhase) {
((TextView) v).setText(String.valueOf(++count));
if (count == 5) {
isInitiatePhase = false;
}
} else if (v instanceof TextView) {
// now we have to start cutting/setting the color to red
((TextView) v).setTextColor(Color.RED);
}
}
启动阶段处理得很好,现在在启动阶段结束后,当我点击了 "点击 TextViews
我想知道哪一个是被点击的。有没有办法找到类似TextView的索引,在 onClick()
方法?
是否 LinearLayout
提供该功能,如果 TextView
不会吗?
另外,我的方法是否正确?还是有其他的Layout我应该使用同样的方法?
而不是添加 onClick
,我们可以添加 onClickListener
在网格布局的线性布局的每个子视图中。类似这样。
//Add gridlayout id in xml
GridLayout girdLayout = (GridLayout) findViewById(R.id.gridlayout_id);
final LinearLayout ll = gridLayout.findViewById(R.id.row1);
int childCount = ll.getChildCount();
for (final int i= 0; i < childCount; i++){
TextView textView = (TextView) ll.getChildAt(i);
textView.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
// Do your job, i current index of child
}
});
}