1

對於Android開發來說很新穎,我需要知道如何以實用的方式更改我的片段中ListView的大小以覆蓋整個屏幕? match_parent,fill_parent不起作用。如何更改片段的大小?

我已經硬編碼的500dp

這裏價值觀是我的片段

<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=".MainActivity"> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="500dp" 
     android:layout_height="500dp" 
     android:divider="@null" 
     android:dividerHeight="0dp" 
     android:layout_marginTop="0dp"> 
    </ListView> 

</RelativeLayout> 

,這裏是JAVA我的片段代碼:

import android.app.ListFragment; 
import android.os.Bundle; 
import android.util.DisplayMetrics; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.FrameLayout; 
import android.widget.LinearLayout; 
import android.widget.ListView; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.LinearLayout; 
import java.util.List; 



public class MyFragment extends ListFragment { 

    List<data> flowers = new datadata().getdatas(); 


    public MyFragment() { 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     dataArrayAdapter adapter = new dataArrayAdapter(getActivity(), 
       R.layout.data_listitem, 
       flowers); 
     setListAdapter(adapter); 


    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, 
          ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.my_fragment, container, false); 

     return rootView; 
    } 

} 

這裏是我的主要活動類

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/myContainer" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scrollbarStyle="insideOverlay" 
    android:scrollbars="none" 
    android:fadeScrollbars="true" 
    android:fitsSystemWindows="true" 
    android:layout_gravity="top" 
    > 
</ScrollView > 

這是我的主要活動的Java代碼:

package mshirvan.example.com.netplex; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Fragment; 
import android.content.Intent; 
import android.media.Image; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.FrameLayout; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 
import android.view.View.OnClickListener; 

import data.row1; 


public class MainActivity extends Activity { 

    public static float screenx = 0; 
    public static float screeny = 0; 
    public static int screenpixelx = 0; 
    public static int screenpixely = 0; 


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

     ScreenUtility utility = new ScreenUtility(this); 
     screenx = utility.getWidth(); 
     screeny = utility.getHeight(); 
     screenpixelx = utility.getPixelWidth(); 
     screenpixely = utility.getPixelHeight(); 

     MyFragment frag = new MyFragment(); 

     getFragmentManager().beginTransaction() 
       .add(R.id.myContainer, frag) 
       .commit(); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     if (id == R.id.action_settings) { 
      ScreenUtility utility = new ScreenUtility(this); 
      String output = "Width: " + utility.getWidth() + ", " + 
        "Height: " + utility.getHeight(); 

      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

請發佈您的活動代碼和佈局 – 2014-11-14 19:45:44

+0

user1429595 2014-11-14 20:04:28

+0

您是否在ScrollView中添加片段? 請編輯您的問題並在其中添加您的活動代碼。 – 2014-11-14 20:06:57

回答

0

把這些在你的列表視圖太:

的android:layout_width = 「match_parent」 機器人:layout_height = 「match_parent」

,或者你可以在包含listview的片段 中將佈局參數更改爲match_parent。

+0

我做了,它沒有工作:(有沒有辦法通過代碼? – user1429595 2014-11-14 19:48:08

+0

@ user1429595有,但你需要在活動課上做它。請問你能提供嗎? – 2014-11-14 19:49:02

+0

是啊得到​​一個參考你的listview在你的rootview的findviewbyid()oncreateview並設置其layoutparameters(在線檢查) – PrisonMike 2014-11-14 19:51:02

0

您必須設置碎片容器高度以匹配父級而非ListView。在你的情況下,ListView將填充它的父高度。 ListView的父親是RelativeLayout,RelativeLayout的高度是matchParent,意思是說,RelativeLayout也會填充它的容器,它的容器就是你的活動佈局文件中定義的片段佔位符。您必須將該容器的高度設置爲matchParent。

0

我認爲問題在於您試圖將片段添加到ScrollView。對於片段的容器使用FrameLayoutandroid:layout_height=match_parent,如果您必須添加多個片段,則可以在活動的佈局中定義多個FrameLayout或動態添加它們。

1

將以下內容添加到您的片段RelativeLayout中。這應該是如下:

android:layout_width="match_parent" 
android:layout_height="500dp" 

例如地圖佈局片段應該如下:

<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="500dp" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" 
    > 

    <com.google.android.gms.maps.MapView 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentTop="true" /> 

</RelativeLayout> 

然後在主要佈局添加此片段佈局。