-3

J'ai déjà effectué cette opération et je fournirai également une partie de ce code. Fondamentalement, j'ai une disposition linéaire à l'intérieur de la vue HorizontalScroll et je veux y ajouter des images dynamiques. Le code d'activité pour cela est ci-dessous et ça marche parfaitement bien tout ce que je veux c'est avoir exactement la même fonctionnalité pour 1 de mes fragments aussi. XML pour le code est donné ci-dessous:[Conversion du code d'activité en fragment] Ajout dynamique d'images à LinearLayout dans le fragment

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingTop="5dp" 
tools:context="com.example.scrolls_tabs.OneFragment" 
android:background="@drawable/wooden_back"> 

<HorizontalScrollView 
    android:id="@+id/HorizontalScrollView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="5dp" 
    android:background="#00ffffff" 
    android:scrollbars="none"> 

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

     <LinearLayout 
      android:id="@+id/imgLayout1" 
      android:layout_width="wrap_content" 
      android:layout_height="110dp" 
      android:orientation="horizontal"> 

     </LinearLayout> 




    </LinearLayout> 
</HorizontalScrollView> 

et code pour ce qui fonctionne parfaitement dans l'activité:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    RelativeLayout layout =(RelativeLayout)findViewById(R.id.activity_main); 
    layout.setBackgroundResource(R.drawable.wooden_back); 

    // Bitmap bdrawable = new Bitmap(this.getResources().getIdentifier("drawable/wood_back", "id", getPackageName())); 
    DisplayMetrics displaymetrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
    int screenHeight = displaymetrics.heightPixels; 
    int screenWidth = displaymetrics.widthPixels; 
    int imgHeight = (int) (screenHeight* 0.30); 
    int imgWidth = (int) (screenWidth* 0.25); 







    for (int j=1; j<10; j++) 
    { 
     final int b1=j; 
     create_img1("drawable/a"+j, b1, imgHeight, imgWidth); 
     ImageView drag = (ImageView)findViewById(b1); 
     dragAndDropImage(drag, "drawable/c"+j); 
    } 

    ImageView imgh=(ImageView)findViewById(R.id.bottomlinear); 
    imgh.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Bundle localBundle = new Bundle(); 
      localBundle.putInt("Item #1", item1); 
      localBundle.putInt("Item #2", item2); 
      localBundle.putInt("Item #3", item3); 
      localBundle.putInt("Item #4", item4); 
      localBundle.putInt("Item #5", item5); 
      localBundle.putInt("Item #6", item6); 
      localBundle.putInt("Item #7", item7); 
      localBundle.putInt("Item #8", item8); 
      localBundle.putInt("Item #9", item9); 

      Intent i = new Intent(getApplicationContext(),test_activity.class); 
      i.putExtras(localBundle); 
      startActivityForResult(i, 1); 
     } 
    }); 

} 





void create_img1(String ss, int ID, int H, int W) 
{ 
    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.imgLayout1); 
    LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(340, 340); 
    parms.gravity = Gravity.CENTER; 
    parms.setMargins(20, 0, 20, 0); 
    final ImageView imageView = new ImageView(this); 
    imageView.setLayoutParams(parms); 

    int id = getResources().getIdentifier(ss, "id", getPackageName()); 
    imageView.setImageResource(id); 
    linearLayout.addView(imageView); 
    imageView.setId(ID); 

    imageView.getLayoutParams().height = H; 
    imageView.getLayoutParams().width = W; 
} 

Cela me essentiellement à la recherche d'une solution où je dois faire la même chose en fragments que j'ai déjà fait en activité. Je suis très nouveau pour Android, donc tout ce qui est utile est apprécié.

Code de fragment actuel qui ne fonctionne pas.

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) 
{ 
    // Inflate the layout for this fragment 


    fa = super.getActivity(); 
    ll = (LinearLayout) inflater.inflate(R.layout.fragment_one, container, false); 


    int imgHeight = 50; 
    int imgWidth = 50; 

    for (int j=1; j<10; j++) 
    { 
     final int b1=j; 
     create_img1("drawable/a"+j, b1, imgHeight, imgWidth); 
    } 




    return ll; 
} 

void create_img1(String ss, int ID, int H, int W) 
{ 
    LinearLayout linearLayout = (LinearLayout) ll.findViewById(R.id.imgLayout1); 
    LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(340, 340); 
    parms.gravity = Gravity.CENTER; 
    parms.setMargins(20, 0, 20, 0); 
    final ImageView imageView = new ImageView(getActivity()); 
    imageView.setLayoutParams(parms); 

    //int id = getResources().getIdentifier(ss, "id", getPackageName()); 
    imageView.setImageResource(R.drawable.a1); 
    linearLayout.addView(imageView); 
    imageView.setId(ID); 

    //imageView.getLayoutParams().height = H; 
    //imageView.getLayoutParams().width = W; 
} 

}

+0

Et où est le problème? – Selvin

+0

SO n'est pas "convertir ce code en fragment" service ... * Code fragment actuel qui ne fonctionne pas. * Définir ne fonctionne pas – Selvin

Répondre

0

vous devez ajouter img vue à disposition linéaire comme ci-dessous

void create_img1(String ss, int ID, int H, int W) 
     { 
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.imgLayout1); 
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(340, 340); 
parms.gravity = Gravity.CENTER; 
parms.setMargins(20, 0, 20, 0); 
final ImageView imageView = new ImageView(this); 
imageView.setLayoutParams(parms); 

int id = getResources().getIdentifier(ss, "id", getPackageName()); 
imageView.setImageResource(id); 

imageView.setId(ID); 

imageView.getLayoutParams().height = H; 
imageView.getLayoutParams().width = W; 

**linearLayout.addView(imageView);** 
    } 
+0

quel est le problème que vous rencontrez en essayant d'accéder à la propriété de mise en page dans le fragment ?? –

+0

En voyant votre journal je suggère d'utiliser la mise en page relative au lieu de la mise en page linéaire comme ceci 'RelativeLayout relLayout = (RelativeLayout) ll.findViewById (R.id.imgLayout1);' ou utiliser LinearLayout dans xml au lieu de RelativeLayout –