在android中的图像按钮和textview的数组

时间:2013-04-18 04:46:17

标签: android textview imagebutton

我正在尝试创建一个数组,其中每个项目都有一个图像按钮,下面的图像按钮将是一个中心的文本视图。任何人都可以告诉我如何做到这一点。我尝试了下面的代码,但没有让它工作

but=new ImageButton(this);
but.setFocusableInTouchMode(true);
but.setId(1);
imbrelp= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
rel.addView(but,imbrelp);
tv= new TextView(this);
tvrelp= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
tvrelp.addRule(RelativeLayout.BELOW, but.getId());
tvrelp.addRule(RelativeLayout.CENTER_HORIZONTAL, but.getId());
rel.addView(tv, tvrelp);
setContentView(rel);

1 个答案:

答案 0 :(得分:0)

我会避免尝试在代码中创建RelativeLayout。对于你想做的事情来说,它会太乱了。而是为您的单个项目创建一个xml布局文件,然后为阵列中的每个项目进行充气。

res / layout / main.xml中的容器布局:

<LinearLayout
  android:id="@+id/container"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical" >

</LinearLayout>

res / layout / item.xml中的项目布局:

<RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content" >

  <ImageButton
    android:id="@+id/image_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/my_image" />

  <TextView
    android:id="@+id/text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/image_button"
    android:layout_centerHorizontal="true"
    android:text="@string/my_text" />

</RelativeLayout>

您活动中的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
  setContentView(R.layout.main);

  ViewGroup container = (ViewGroup) findViewById(R.layout.container);

  LayoutInflater inflater = LayoutInflater.from(this);

  Item[] items = getMyArrayOfItems();
  for (Item i : items) {
    View itemView = inflater.inflate(R.layout.item, container, false);
    ImageButton button = (ImageButton) itemView.findViewById(R.id.image_button);
    TextView textView = (TextView) itemView.findViewById(R.id.text_view);

    // TODO set the text and images

    container.addView(itemView);
  }
}