2016-07-17 5 views
1

ボタンをクリックすると、プログラムにフラグメントをプログラムで追加したいと考えています。私のactivity_main.xmlレイアウトには、textViews、imageViews、およびボタンがあります。そのボタンをクリックすると、imageViewでフラグメントを開きます。私の問題は、activity_mainレイアウトを隠す代わりに、textViewと画像の上の小さなウィンドウにフラグメントが表示されることです。どのように私はこの問題を解決することができ??? `ボタンをクリックすると、プログラムにフラグメントがアクティビティに追加されます

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:background="@android:color/holo_orange_light" 
    android:layout_height="match_parent" 
    android:paddingBottom="16dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="16dp" 
    android:orientation="vertical" 
    android:weightSum="1"> 


    <FrameLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/frag_container"> 
    </FrameLayout> 

    <AnalogClock 
     android:dial="@drawable/clock_dial" 
     android:hand_hour="@drawable/clock_hour_hand" 
     android:hand_minute="@drawable/clock_minute_hand" 
     android:id="@+id/clock" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_weight="0.75" /> 


    <TextView 
     android:id="@+id/date" 
     android:layout_marginLeft="8dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:layout_marginLeft="8dp" 
     android:paddingTop="8dp" 
     android:id="@+id/location" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/sunrise" 
     android:layout_marginLeft="8dp" 
     android:paddingTop="8dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/sunset" 
     android:layout_marginLeft="8dp" 
     android:paddingTop="8dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Sunset" 
     android:textColor="@android:color/white" 
     android:background="@android:color/black" 
     android:id="@+id/button_sunset" 
     android:layout_gravity="center_horizontal" /> 

</LinearLayout>` 

マイフラグメントレイアウト:

`<?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"> 

    <FrameLayout 
     android:id="@+id/sky" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.61" 
     android:background="@color/blue_sky"> 

     <ImageView 
      android:id="@+id/sun" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_gravity="center" 
      android:src="@drawable/sun"/> 
    </FrameLayout> 

    <FrameLayout 
     android:id="@+id/sea" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.39" 
     android:background="@color/sea"> 

    </FrameLayout> 

</LinearLayout>` 

マイアクティビティ:

public class MainActivity extends AppCompatActivity { 

    @BindView(R.id.date) 
    TextView mDate; 
    @BindView(R.id.location) 
    TextView mLocation; 
    @BindView(R.id.sunrise) 
    TextView mSunrise; 
    @BindView(R.id.sunset) 
    TextView mSunset; 
    @BindView(R.id.button_sunset) 
    Button buttonSunset; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ButterKnife.bind(this); 

     setSunsetButton(); 

    } 

public void setSunsetButton() { 

     buttonSunset.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       SunsetFragment sunsetFragment = new SunsetFragment(); 
       FragmentManager fm = getSupportFragmentManager(); 
       FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
       fragmentTransaction.add(R.id.frag_container, sunsetFragment); 
       fragmentTransaction.commit(); 


      } 
     }); 

    } 
} 

答えて

2

あなたFrameLayoutFragment保持し、幅と高さのセットを持っていますwrap_contentになります。そのため、小さなウィンドウに表示されます。

FragmentActivityの全コンテンツビューを交換するかさえ断片を保持し、match_parentに設定幅と高さを持つ新しいActivityを開くために良いアイデアだろう。

関連する問題