2016-01-23 117 views
1

我创建了一个带有可滚动选项卡的项目。每个选项卡都由一个片段声明。现在我想要f.e.片段1有8个按钮,Fragment2 4个按钮等等。我想要有行,每个包含最多三个按钮,所以如果我产生4个按钮,应该有一行3个按钮和一行下面有1个按钮。因此,这是如何使滚动标签:以编程方式将按钮添加到片段

我Main_Activity.java

public class MainActivity extends FragmentActivity { 
    ViewPager viewPager = null; 
    SoundPlayer sp = new SoundPlayer(); 
    protected void onCreate(Bundle savedInstanceStats) 
    { 
     super.onCreate(savedInstanceStats); 
     setContentView(R.layout.homescreen); 
     viewPager = (ViewPager) findViewById(R.id.pager); 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     viewPager.setAdapter(new MyAdapter(fragmentManager)); 
    } 
} 

class MyAdapter extends FragmentPagerAdapter 
{ 

    public MyAdapter(FragmentManager fm) { 
     super(fm); 

    } 

    @Override 
    public Fragment getItem(int position) { 
     Fragment fragment = null; 
     if(position == 0) 
      fragment = new FragmentDominik(); 
     else if(position == 1) 
      fragment = new FragmentTobias(); 
     else if(position == 2) 
      fragment = new FragmentTom(); 
     else if(position == 3) 
      fragment = new FragmentNikolas(); 
     else if(position == 4) 
      fragment = new FragmentGroups(); 
     else if(position == 5) 
      fragment = new FragmentOthers(); 
     else if(position == 6) 
      fragment = new FragmentFavorites(); 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return 7; 
    } 

    public CharSequence getPageTitle(int position) 
    { 
     String title = new String(); 
     if(position == 0) 
      return "Dominik"; 
     else if(position == 1) 
      return "Tobias"; 
     else if(position == 2) 
      return "Tom"; 
     else if(position == 3) 
      return "Nikolas"; 
     else if(position == 4) 
      return "Groups"; 
     else if(position == 5) 
      return "Others"; 
     else if(position == 6) 
      return "Favorites"; 
     return null; 
    } 
} 

我homescreen.xml

<android.support.v4.view.ViewPager 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:id="@+id/pager" 
    android:layout_height="match_parent"> 

    <android.support.v4.view.PagerTitleStrip 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/title" 
     android:layout_gravity="top" 
     android:paddingTop="4dp" 
     android:paddingBottom="4dp" 
     android:background="#4052b5" 
     android:focusableInTouchMode="true" 
     android:textColor="#ffffff"/> 
</android.support.v4.view.ViewPager> 

一个例子Fragment.java

public class FragmentTobias extends Fragment { 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      return inflater.inflate(R.layout.tobias, container, false); 
     } 
    } 

一个例子片段.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#d1d1d1"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:id="@+id/textView3" 
     android:layout_gravity="center_horizontal" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Tobias" 
     android:id="@+id/textView7" 
     android:layout_gravity="center_horizontal" /> 
</LinearLayout> 

所以现在如果我想在tobias.xml中产生8个按钮的数量,在FragmentTobias.java中大量使用,我该怎么做?我对创建android应用程序很陌生,所以任何帮助表示赞赏。

EDIT1:

LinearLayout linearLayout = new LinearLayout(getActivity()); 
     LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
     linearLayout.setLayoutParams(params1); 
     linearLayout.setOrientation(LinearLayout.HORIZONTAL); //or VERTICAL 

     LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

     Button button = new Button(getActivity()); 
     button.setLayoutParams(params2); 

     Button button2 = new Button(getActivity()); 
     button2.setLayoutParams(params2); 

     //like this, add all buttons and other views 
     //you can use a loop for adding multiple similar views 

     linearLayout.addView(button); 
     linearLayout.addView(button2); 
     container.addView(linearLayout); 

回答

1

您可以动态地添加按钮ViewGroup并用它吹你的看法。试试以下代码,

public class FragmentTobias extends Fragment { 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     LinearLayout linearLayout = new LinearLayout(getActivity()); 
     LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     linearLayout.setLayoutParams(layoutParams); 
     linearLayout.setOrientation(LinearLayout.HORIZONTAL); //or VERTICAL 

     LayoutParams buttonParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

     Button button = new Button(getActivity()); 
     button.setLayoutParams(buttonParams); 

     Button button2 = new Button(getActivity()); 
     button2.setLayoutParams(buttonParams); 

     linearLayout.addView(button); 
     linearLayout.addView(button2); 

     //like this, add all buttons and other views 
     //you can use a loop for adding multiple similar views 

     container.addView(linearLayout); 
     View view = inflater.inflate(R.layout.tobias, container, false); 

     return view; 
    } 
} 
相关问题