ImageButton 大小不一样
我对 ImageButtons 的宽度有疑问,它的大小不一样。我已经尝试了两个小时的所有属性,但没有任何结果。我在运行时创建按钮并放入行内(也在运行时创建)。有人知道这个问题有什么解决办法吗?
public static TableRow[] Create(List<Apartment> list){
TableRow[] rows=null;
try{
rows=new TableRow[list.size()*3];
int i=0;
for(final Apartment ap : list){
rows[3*i]=new TableRow(activity);
rows[3*i+1]=new TableRow(activity);
rows[3*i+2]=new TableRow(activity);
rows[3*i].setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.FILL_PARENT));
rows[3*i+1].setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.FILL_PARENT));
rows[3*i+2].setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.FILL_PARENT));
rows[3*i].setBackgroundColor(color_background[(i%2)]);
rows[3*i+1].setBackgroundColor(color_background[(i%2)]);
rows[3*i+2].setBackgroundColor(color_background[(i%2)]);
TextView txtMainInform=new TextView(activity);
txtMainInform.setText(ap.GetMainInformation());
txtMainInform.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
rows[3*i].addView(txtMainInform);
rows[3*i].setVisibility(1);
TextView txtMoreInform=new TextView(activity);
txtMoreInform.setText(ap.GetMoreInformation());
txtMoreInform.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
rows[3*i+1].addView(txtMoreInform);
ImageButton imbCall=new ImageButton(activity);
imbCall.setImageResource(R.drawable.phone);
imbCall.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(ap.GetContact()!=null){
try {
activity.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ap.GetContact())));
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
imbCall.setMaxWidth(24);
imbCall.setMinimumWidth(22);
ImageButton imbGallery=new ImageButton(activity);
imbGallery.setMaxWidth(24);
imbGallery.setMinimumWidth(22);
imbGallery.setImageResource(R.drawable.gallery_icon);
ImageButton imbMap=new ImageButton(activity);
imbMap.setImageResource(R.drawable.map);
imbMap.setMaxWidth(24);
imbMap.setMinimumWidth(22);
imbMap.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(activity,ResultMap.class);
activity.startActivity(i);
}
});
ImageButton imbWay=new ImageButton(activity);
imbWay.setMaxWidth(24);
imbWay.setMinimumWidth(22);
imbWay.setImageResource(R.drawable.walker);
rows[3*i+2].addView(imbCall);
rows[3*i+2].addView(imbGallery);
rows[3*i+2].addView(imbMap);
rows[3*i+2].addView(imbWay);
i++;
}
}
catch(Exception e){
}
return rows;
}
I have problem with width of ImageButtons, it isn't the same size. I have experimented with all attributes for two hours and nothing. I create buttons at runtime and put inside row (also created at runtime). Does anybody know any solution for this ?
public static TableRow[] Create(List<Apartment> list){
TableRow[] rows=null;
try{
rows=new TableRow[list.size()*3];
int i=0;
for(final Apartment ap : list){
rows[3*i]=new TableRow(activity);
rows[3*i+1]=new TableRow(activity);
rows[3*i+2]=new TableRow(activity);
rows[3*i].setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.FILL_PARENT));
rows[3*i+1].setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.FILL_PARENT));
rows[3*i+2].setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.FILL_PARENT));
rows[3*i].setBackgroundColor(color_background[(i%2)]);
rows[3*i+1].setBackgroundColor(color_background[(i%2)]);
rows[3*i+2].setBackgroundColor(color_background[(i%2)]);
TextView txtMainInform=new TextView(activity);
txtMainInform.setText(ap.GetMainInformation());
txtMainInform.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
rows[3*i].addView(txtMainInform);
rows[3*i].setVisibility(1);
TextView txtMoreInform=new TextView(activity);
txtMoreInform.setText(ap.GetMoreInformation());
txtMoreInform.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
rows[3*i+1].addView(txtMoreInform);
ImageButton imbCall=new ImageButton(activity);
imbCall.setImageResource(R.drawable.phone);
imbCall.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(ap.GetContact()!=null){
try {
activity.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ap.GetContact())));
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
imbCall.setMaxWidth(24);
imbCall.setMinimumWidth(22);
ImageButton imbGallery=new ImageButton(activity);
imbGallery.setMaxWidth(24);
imbGallery.setMinimumWidth(22);
imbGallery.setImageResource(R.drawable.gallery_icon);
ImageButton imbMap=new ImageButton(activity);
imbMap.setImageResource(R.drawable.map);
imbMap.setMaxWidth(24);
imbMap.setMinimumWidth(22);
imbMap.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(activity,ResultMap.class);
activity.startActivity(i);
}
});
ImageButton imbWay=new ImageButton(activity);
imbWay.setMaxWidth(24);
imbWay.setMinimumWidth(22);
imbWay.setImageResource(R.drawable.walker);
rows[3*i+2].addView(imbCall);
rows[3*i+2].addView(imbGallery);
rows[3*i+2].addView(imbMap);
rows[3*i+2].addView(imbWay);
i++;
}
}
catch(Exception e){
}
return rows;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我猜想您将这些行中的每一行添加到同一个 TableLayout 中,或者达到这种效果?如果是这样,它会将这些行与另一行关联起来,以便一行中的第一项与另一行中的第一项位于同一列中。
我几乎无法从你的图像中看出,但我的猜测是图像顶部的极度截止文本正在推动列的宽度,从而加宽第一个按钮。
如果这恰好是问题所在,您可以通过将按钮行放入其他类型的视图来修复它。
I would guess that you add each of those rows into the same TableLayout, or something to that effect? If so, it would associate the rows with another, so that the first item in one row is in the same column as the first item in another row.
I can barely tell by your image, but my guess would be that the extremely cut-off text at the top of the image is pushing the width of the column, widening the first button with it.
You could possibly fix it by putting the row of buttons into some other sort of view, if that happens to be the problem.