2014-11-03 53 views
0

我试图在单击mapview片段内的按钮时更改“MapView”和“InfoContent”的权重。 mapView Fragment在PlaceholderFragment2 Java Class中定义。 第一次点击应该将权重更改为新值,而第二次点击应该恢复旧值。使用按钮更改片段的大小

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

我很喜欢你的解决方案,同时,我能够用不同的解决方案来解决它自己。我会尝试这个,因为它更清洁谢谢! – 2014-11-08 10:23:30