0

したがって、ランタイムでImageViewとTextViewを作成しており、TextViewをImageViewの右側に配置する必要があります。

私はこの単純なコードを試しています:

private void loadContent(Module module) {
    this.removeAllViewsInLayout();      
    this.addView(getModuleIconView(module));
    this.addView(getModuleNameView(module));
}

private ImageView getModuleIconView(Module module) {
    ImageView view = new ImageView(context);
    view.setImageResource(module.getIconResId());   
    android.view.ViewGroup.LayoutParams params = new LayoutParams(120, 120);                
    view.setLayoutParams(params);
    view.setId(1); //seting some id for the view
    return view;
}

private TextView getModuleNameView(Module module) {
    TextView view = new TextView(context);
    view.setText(module.getName()); 
    params.addRule(RelativeLayout.RIGHT_OF, 1); //hoping for view to be placed right of the ImageView which id was set to 1
    return view;
}

ここで何を間違えますか?TextViewは、RIGHT_OFを無視してImageViewに配置されます

クラスがRelativeLayoutから継承することに言及する必要があります

4

1 に答える 1

0

それは私の愚かな間違いでした。3番目のメソッドはsetLayoutParamsをリークします

したがって、正しいメソッド本体は次のとおりです。

private TextView getModuleNameView(Module module) {
    TextView view = new TextView(context);
    view.setText(module.getName()); 
    params.addRule(RelativeLayout.RIGHT_OF, 1);
    view.setLayoutParams(params);
    return view;
}
于 2012-10-26T16:04:40.957 に答える