-3

Я уже сделал это в действии, и я также предоставлю часть этого кода. В принципе, у меня есть линейная компоновка в представлении HorizontalScroll, и я хочу динамически добавлять изображения. Код активности для этого ниже, и он отлично работает, и я хочу иметь точно такую ​​же функциональность для 1 из моих фрагментов. XML для кода приведен ниже:[Преобразование кода операции в фрагмент] Динамическое добавление изображений в LinearLayout во фрагменте

<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> 

и код для этого, что прекрасно работает в деятельности:

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; 
} 

Это в основном я искал решение, где я получаю, чтобы сделать то же самое в фрагментах, которые я уже делал в деятельности. Я очень новичок в андроиде, поэтому все полезное оценивается.

Текущий код фрагмента, который не работает.

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

А где проблема? – Selvin

+0

SO не используется для преобразования этого кода в фрагмент ... * Текущий код фрагмента, который не работает. * Define not working – Selvin

ответ

0

вы должны добавить Img вид линейной компоновки, как показано ниже

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

В чем проблема, с которой вы сталкиваетесь при попытке получить доступ к свойству макета в фрагменте? –

+0

Видя ваш журнал, я предлагаю использовать относительный макет вместо линейного макета программно, как этот 'RelativeLayout relLayout = (RelativeLayout) ll.findViewById (R.id.imgLayout1);' или использовать LinearLayout в xml вместо RelativeLayout –