2014-11-03 7 views
0

Я пытаюсь изменить вес «MapView» и «InfoContent», когда я нажимаю кнопку внутри фрагмента mapview. Фрагмент mapView определен в классе Java PlaceholderFragment2. Первый щелчок должен изменить вес на новое значение, а второй щелчок должен восстановить старое значение.Измените размер фрагмента кнопкой

Xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
tools:context=".MainActivity" 
android:orientation="vertical" 
> 

<FrameLayout 
    android:id="@+id/TitleBar" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    > 
</FrameLayout> 

<FrameLayout 
    android:id="@+id/MapView" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"> 
</FrameLayout> 

<FrameLayout 
    android:id="@+id/InfoTitleBar" 
    android:layout_width="fill_parent" 
    android:layout_height="170dp" 
    > 
</FrameLayout> 

<FrameLayout 
    android:id="@+id/InfoContent" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="0" 
    > 
</FrameLayout></LinearLayout> 

MainActivity.Java

public class MainActivity extends Activity { 

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

    PlaceholderFragment frg=new PlaceholderFragment(); 
    PlaceholderFragment2 frg2=new PlaceholderFragment2(); 
    PlaceholderFragment3 frg3=new PlaceholderFragment3(); 
    PlaceholderFragment4 frg4=new PlaceholderFragment4(); 

    FragmentManager manager=getFragmentManager(); 
    FragmentTransaction transaction=manager.beginTransaction(); 

    transaction.add(R.id.TitleBar, frg, "Frag_Top_tag"); 
    transaction.add(R.id.MapView, frg2, "Frag_Middle_tag"); 
    transaction.add(R.id.InfoTitleBar, frg3, "Frag_Bottom_tag"); 
    transaction.add(R.id.InfoContent, frg4, "Frag_Content_tag"); 

    transaction.commit(); 
} 

И PlaceHolderFragment2.java

public static class PlaceholderFragment2 extends Fragment { 

    public PlaceholderFragment2() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.mapview, container, 
       false); 

     final Button button = 
       (Button) rootView.findViewById(R.id.zoomMap); 
      button.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        buttonClicked(v); 
       } 
      }); 

     return rootView; 
    } 

ответ

1

Я решил, я положил фрагмент в линейной компоновки, то в основной деятельностью я создал объект, когда я нажимаю j ust измените размер веса линейной компоновки, cos 'Мне не нужен, или по транзакции фрагмента .

MainActivity

private Button button; 
private LinearLayout layoutListView; 
private LinearLayout.LayoutParams lpListView; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_container); 

    button = (Button) findViewById(R.id.button); 

    layoutListView = (LinearLayout) findViewById(R.id.listTreeView); 

    lpListView = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT); 

    lpListView.weight = 20; 



    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      if (lpListView.weight == 0) { 



       lpListView.weight = 20; 




      } else { 

       lpListView.weight = 0; 


      } 

      layoutListView.setLayoutParams(lpListView); 




     } 
    }); 



} 

}

 <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="100" 
     android:orientation="horizontal" 
     android:weightSum="100" >  

     <LinearLayout 
      android:id="@+id/listTreeView" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="20" 
      android:orientation="horizontal" > 

      <fragment 
       android:id="@+id/fraglistView" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       class="com.example.ListTreeView" /> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/fragbutton" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="80" 
      android:background="#F000" > 

      <fragment 
       android:id="@+id/fraglistRight" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       class="com.example.ListViewRight" /> 
     </LinearLayout> 
</LinearLayout> 
+0

мне очень нравится ваше решение, тем временем я был в состоянии решить сам с другим раствором. Я попробую это, потому что он чище Спасибо! –