2012-06-16 32 views
10

Tôi đang cố gắng thêm các nút hình ảnh vào chương trình thành một phần của một trình xem. Tôi đã thử các mã khác nhau, nhưng không có nút nào hiển thị ngay cả khi Eclipse không trả về lỗi nào.Thêm các nút theo chương trình vào một đoạn

Tôi đã tìm thấy câu hỏi tương tự here nhưng câu trả lời không giúp tôi làm cho nút của tôi xuất hiện.

Đây là mã của tôi.

public class ViewPagerFragment extends Fragment { 

private ViewPagerActivity mViewPagerActivity; 
private String mId; 

public ViewPagerFragment(String id) { 
    mId = id; 
} 

@Override 
public void onAttach(Activity activity) { 
    if (activity instanceof ViewPagerActivity) { 
     mViewPagerActivity = (ViewPagerActivity)activity; 
    } 
    super.onAttach(activity); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment, container, false); 

    int[] image_array = { 
      R.drawable.elebutton, 
      R.drawable.right, 
      R.drawable.middle, 
      }; 

    for (int i =0;i<image_array.length;i++){ 
      ImageButton b1 = new ImageButton(getActivity()); 
      b1.setId(100 + i); 
      b1.setImageResource(image_array[i]); 

      RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
      if (i > 0) { 
       lp.addRule(RelativeLayout.BELOW, b1.getId() - 1); 
      } 
      b1.setLayoutParams(lp); 

      ImageHolder ih = new ImageHolder(getActivity()); 
      ih.addView(b1); 


    } 

    return v; 

} 
public class ImageHolder extends FrameLayout { 

    public ImageHolder(Context context) { 
     super(context); 
     initView(context); 
    } 

    public ImageHolder(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     initView(context); 
    } 

    public ImageHolder(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     initView(context); 
    } 

    private void initView(Context context){ 
     View.inflate(context, R.layout.fragment, this); 
    } 

    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
     // TODO Auto-generated method stub 
     for(int i = 0 ; i < getChildCount() ; i++){ 
      getChildAt(i).layout(l, t, r, b); 
     } 
    } 

} 

Trả lời

0

Dường như bạn đang tạo i số lượng hình ảnh, thêm mỗi hình ảnh vào một chủ ảnh. Tuy nhiên, tôi không thấy bất kỳ phần nào bạn thực sự tham gia imageholders để bố trí chính. Về cơ bản, chúng được tạo nhưng không được thêm vào bất kỳ đâu. Giả sử R.layout.fragment của bạn chỉ có FrameLayout với id frameLayout1. Dưới đây sẽ là đề xuất của tôi:

public class ViewPagerFragment extends Fragment { 

private ViewPagerActivity mViewPagerActivity; 
private String mId; 

public ViewPagerFragment(String id) { 
    mId = id; 
} 

@Override 
public void onAttach(Activity activity) { 
    if (activity instanceof ViewPagerActivity) { 
     mViewPagerActivity = (ViewPagerActivity)activity; 
    } 
    super.onAttach(activity); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment, container, false); 
} 
// IMPORTANT PART! Here we will add images after fragment is inflated and instantiated 
@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    // Get the root layout of fragment, we called it frameLayout1 
    FrameLayout fl = (FrameLayout)(this.getActivity.findViewById(R.id.frameLayout1)); 
    int[] image_array = { 
      R.drawable.elebutton, 
      R.drawable.right, 
      R.drawable.middle, 
      }; 

    for (int i =0;i<image_array.length;i++){ 
      ImageButton b1 = new ImageButton(getActivity()); 
      b1.setId(100 + i); 
      b1.setImageResource(image_array[i]); 

      RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
      if (i > 0) { 
       lp.addRule(RelativeLayout.BELOW, b1.getId() - 1); 
      } 
      b1.setLayoutParams(lp); 

      ImageHolder ih = new ImageHolder(getActivity()); 
      ih.addView(b1); 
      fl.addView(ih); 
    } 
} 
// End of important part 
public class ImageHolder extends FrameLayout {... 
} 
Các vấn đề liên quan