我想使用网格布局(不是网格视图),并且在每个单元格中我想要图像视图,在它下面是文本视图。我想在网格布局的每个单元格上实现点击监听器。有人告诉我该怎么做?
答案 0 :(得分:6)
假设您的单元格布局最顶层的包装器是RelativeLayout,这是可能有效的代码:
GridLayout grid = (GridLayout) findViewById(R.id.your_layout_id);
int childCount = grid.getChildCount();
for (int i= 0; i < childCount; i++){
RelativeLayout container = (RelativeLayout) grid.getChildAt(i);
container.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
// your click code here
}
});
}
答案 1 :(得分:1)
我认为,将cardview与网格布局配合使用会更好,并且在cardview中可以放置图像和文本,并且可以直接设置onclicklistener。 例如
cardApplication.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,ApplicationList.class);
startActivity(intent);
}
});
where cardApplication is the name of my cardview within grid layout
and this is how xml of my cardview looks like
<android.support.v7.widget.CardView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
app:cardElevation="8dp"
app:cardCornerRadius="8dp"
android:id="@+id/cardApplication"
android:clickable="true"
>
<LinearLayout
android:layout_gravity="center_horizontal|center_vertical"
android:layout_margin="16dp"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/ic_apps"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text="Applications"
android:textAlignment="center"
android:textColor="#000000"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
答案 2 :(得分:0)
gl=(GridLayout) findViewById(R.id.gl);
int childCount = gl.getChildCount();
for(int i=0;i<childCount;i++){
LinearLayout l = (LinearLayout) gl.getChildAt(i);
l.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
Intent i=new Intent(MainActivity.this,SecondActivity.class);
startActivity(i);
}
});
}
答案 3 :(得分:0)
在布局的Clicklistener
上实施childview
。
例如在Imagebutton.setClicklistener(this)
,您可以对每个单元格做出反应
在布局
你也可以从View()类扩展自己的brickclass扩展ImageButton
然后直接在Object
中构建自己的方法成员变量 希望这会有所帮助 帕特里克·韦塔尔