2017-01-30 11 views
0

プログラムでRelativeLayoutを追加しようとしているときと、xmlビューを直接使用するときに違いがあります。ビューの作成とxmlの作成 - コードでの作成

私はcontainer_tabsにいくつかのRelativeLayoutをコピー&ペーストした場合、それは動作します。..

そして、私は(container_tabsへとまったく同じ)relativeLayoutファイルを膨らませるためにしようとした結果が異なっており、それがない作品を行います。

私はプログラム的に私の見解を埋める方法

@BindView(R.id.container_tabs) 
    protected LinearLayout mLinearLayoutContainerTabs; 

    private List<CustomBookingTab> mBookingTabsList = new ArrayList<>(); 

    private void initCustomButtonsTabs() { 
     mBookingTabsList.add(new CustomBookingTab(this, EnumBookingTab.BOOKING_TAB_CALENDAR, R.drawable.ic_calendar_white)); 
     mBookingTabsList.add(new CustomBookingTab(this, EnumBookingTab.BOOKING_TAB_TIME, R.drawable.ic_clock)); 


     for (int i = 0; i < mBookingTabsList.size(); i++) { 
      mLinearLayoutContainerTabs.addView(mBookingTabsList.get(i).getRelativeLayoutBookingTab(), i); 
     } 
    } 

私はxmlファイル(CustomBookingTabコンストラクタ)からの私の見解を膨らませる方法

mRelativeLayoutBookingTab = (RelativeLayout) inflater.inflate(R.layout.booking_tab, null); 

メインビュー

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="-29dp" 
     android:orientation="horizontal"> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="horizontal"> 

      <LinearLayout 
       android:id="@+id/container_tabs" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_gravity="center" 
       android:gravity="center" 
       android:orientation="horizontal"> 

       <!-- Tab item --> 
       <RelativeLayout 
        android:layout_width="0dp" 
        android:layout_height="70dp" 
        android:layout_gravity="center" 
        android:layout_weight="1"> 

        <FrameLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content"> 

         <ImageView 
          android:layout_width="70dp" 
          android:layout_height="70dp" 
          android:layout_alignParentLeft="true" 
          android:background="@drawable/circle_blue_button_border_white" 
          android:padding="21dp" 
          android:src="@drawable/ic_calendar_white" 
          android:text="Button" 
          android:textColor="#FFFFFF" 
          android:textSize="30sp" /> 

        </FrameLayout> 

       </RelativeLayout> 


      </LinearLayout> 

     </LinearLayout> 

    </LinearLayout> 

これを行うには良い方法はありますか?なにが問題ですか?

+0

「mLinearLayoutContainerTabs」はどこに作成されていますか?より多くのコードを提供できますか? –

+0

'mLinearLayoutContainerTabs'を追加しました。それは単純な活動です – Johnny

答えて

0

XMLからビューを追加したり、解剖学的にビューを膨張させることによっていくつかの違いがあります。

しかし、相対レイアウトの場合、XMLを準備するときに、さまざまな相対プロパティを使用して異なるビューをまとめてXMLに設定します。

そして、我々は我々が怒鳴るように追加ルールのオプションを使用する必要があり、相対レイアウトを使用して動的にビューを追加する場合:動的AddRull通じことができます

RelativeLayout relativeLayout = new RelativeLayout(getActivity()); 
     RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
     Button button1 = new Button(this); 
     button1.setId(1); 
     Button button2 = new Button(this); 
     button2.setId(2); 
     relativeLayout.addView(button1); 
     relativeLayout.addView(button2); 
     RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) button1.getLayoutParams(); 
     lp.addRule(RelativeLayout.RIGHT_OF, button2.getId()); 
     lp.addRule(RelativeLayout.LEFT_OF, button2.getId()); 
     lp.addRule(RelativeLayout.ALIGN_END, button2.getId()); 
     lp.addRule(RelativeLayout.ALIGN_LEFT, button2.getId()); 
     lp.addRule(RelativeLayout.ALIGN_BASELINE, button2.getId()); 
     lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, button2.getId()); 
     lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, button2.getId()); 
     lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, button2.getId()); 
     lp.addRule(RelativeLayout.ABOVE, button2.getId()); 
     lp.addRule(RelativeLayout.ALIGN_PARENT_TOP, button2.getId()); 
     lp.addRule(RelativeLayout.START_OF, button2.getId()); 
     lp.addRule(RelativeLayout.ALIGN_RIGHT, button2.getId()); 
     lp.addRule(RelativeLayout.ALIGN_PARENT_END, button2.getId()); 
     lp.addRule(RelativeLayout.END_OF, button2.getId()); 

ほとんどすべての相対的なレイアウトプロパティを。

関連する問題