2016-10-15 6 views
-1

プログラムでRelativeLayoutを既存のxmlレイアウトに追加できません。 XMLレイアウトのみが表示されます。私のコードの共有プログラムでRelativeLayoutを追加できません

fragment_home.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.timetable.act.MainActivity$PlaceholderFragment" 
android:id="@+id/homeLayout" 
android:background="@color/white"> 


<ImageButton 
    android:layout_width="70dp" 
    android:layout_height="70dp" 
    android:layout_marginTop="380dp" 
    android:layout_marginLeft="240dp" 
    android:background="@drawable/circle" 
    android:id="@+id/addEvent" 
    android:src="@drawable/ic_mode_edit_white_24dp" 
    android:layout_gravity="right|bottom" 
    android:contentDescription="@string/hello" /> 
</RelativeLayout> 

PlaceholderFragment.java

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = null; 

     switch (Integer.valueOf(getArguments().get(ARG_SECTION_NUMBER).toString())) { 
     case 1: 
      rootView = inflater.inflate(R.layout.fragment_home, container, false); 
      displyAllEvent(rootView); 

      break; 
     case 2: 
      rootView = inflater.inflate(R.layout.fragment_setting, container, false); 
      break; 
     default: 
      rootView = inflater.inflate(R.layout.fragment_main, container, false); 
      break; 
     } 
     return rootView; 
    } 
private void displyAllEvent(View mainView){ 
     Drawable drawableShadow = ContextCompat.getDrawable(getActivity(),R.drawable.tile_shadow); 

     RelativeLayout tileLayout = new RelativeLayout(getActivity()); 
     RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.MATCH_PARENT, 
       RelativeLayout.LayoutParams.WRAP_CONTENT); 

     tileLayout.setBackground(drawableShadow); 
     tileLayout.setPadding(R.dimen.tilePadding,R.dimen.tilePadding,R.dimen.tilePadding,R.dimen.tilePadding); 
     tileLayout.setLayoutParams(rlp); 
     tileLayout.setId(999); 

     RelativeLayout.LayoutParams titleLayout = new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.MATCH_PARENT, 
       RelativeLayout.LayoutParams.WRAP_CONTENT); 

     TextView titleView = new TextView(getActivity()); 
     titleView.setText("Testing title with test"); 
     titleView.setId(111); 
     titleView.setTextColor(R.color.white); 
     titleView.setLayoutParams(titleLayout); 

     tileLayout.addView(titleView); 

     RelativeLayout.LayoutParams textLeftLayout = new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.WRAP_CONTENT, 
       RelativeLayout.LayoutParams.WRAP_CONTENT); 
     textLeftLayout.addRule(RelativeLayout.BELOW, titleView.getId()); 

     TextView startHView = new TextView(getActivity()); 
     startHView.setText("left Text"); 
     startHView.setId(222); 
     startHView.setTextColor(R.color.white); 
     startHView.setLayoutParams(textLeftLayout); 

     tileLayout.addView(startHView); 

     RelativeLayout.LayoutParams textRightLayout = new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.WRAP_CONTENT, 
       RelativeLayout.LayoutParams.WRAP_CONTENT); 
     textRightLayout.addRule(RelativeLayout.BELOW, titleView.getId()); 
     textRightLayout.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
     textLeftLayout.addRule(RelativeLayout.ALIGN_RIGHT, startHView.getId()); 

     TextView startMView = new TextView(getActivity()); 
     startMView.setText("Right Text"); 
     startMView.setId(333); 
     startMView.setTextColor(R.color.white); 
     startMView.setLayoutParams(textRightLayout); 

     tileLayout.addView(startMView); 

     RelativeLayout parentView = (RelativeLayout)mainView.findViewById(R.id.homeLayout); 
     parentView.addView(tileLayout); 
    } 

出力: enter image description here

+0

@MikeM。 (色を黒または他の色に変更することによって)解決するはずです – Zoe

+0

@MikeM Drawableオブジェクト(** tileLayout.setBackground(drawableShadow)**)によって背景色を薄緑色に設定しています –

+1

うーん、OK、 'tileLayout.setPadding()'呼び出しが間違っています。 'R.dimen'はリソースIDであり、実際の値ではありません。実際の値を取得するには、 'getResources()。getDimension(R.dimen.tilePadding)'を使います。 –

答えて

0

代わりに、実行中の相対的なレイアウトを作成するには、単純に作ることができます既存のものと、すべての子供が表示される...例:

あなたも、あなたがクリック可能なレイアウトがアクティブなときに、あなたが行うことができますになりたいレイアウトのボタンを持っている場合は
if (myCondition) { 
    myLayout = (RelativeLayout) myContext.findViewById(R.id.myLayoutID); 
    myLayout.setVisibilty(View.visible); 
    myLayoutTextView = (TextView) myContext.findViewById(R.id.myTextView); 
    myLayoutTextView.setVisibility(View.VISIBLE); 
} 

Button myButton = (Button) findViewById(R.id.myButton); 
myButton.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if (myCondition) { 
      //Do Stuff Here 
     } 
}); 
関連する問題