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