我在寫我的第一個Android應用程序。我正在使用android 2.3.3 SDK。遊戲是一種卡片遊戲,在屏幕上有一個4x4網格的網格。散佈在屏幕上一個DataGrid都將它的項目可見
當遊戲開始在屏幕上看到的僅僅是數據網格(無菜單或沒有)。
所以GameActivity佈局如下:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/faces_grid_view"
android:numColumns="4"
android:verticalSpacing="1dp"
android:horizontalSpacing="1dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</GridView>
這是GameActivity類的OnCreate函數的相關代碼:
Display display = getWindowManager().getDefaultDisplay();
final int width = display.getWidth();
final int height = display.getHeight();
final int bottomPadding=150;
//Display display = getWindowManager().getDefaultDisplay();
gameTurns = new ArrayList<GameTurn>();
imageWidth=width/4;
imageHeight=(height-bottomPadding)/4;
imageAdapter = new ImageAdapter(this,imageWidth,imageHeight);
facesGridView = (GridView) findViewById(R.id.faces_grid_view);
facesGridView.setAdapter(imageAdapter);
在OnCreate
()的代碼我得到defaultDisplaySize,除以4,所以我會知道圖像可以採用的最大高度和寬度。
- 由於某種原因,我需要添加一個bottomPadding。我在galaxy note和galaxy tab 10.1上檢查過它,也許getDefaultDisplay也會返回平板電腦本身底部工具欄的空間,所以圖片會在沒有任何填充的情況下覆蓋整個屏幕。
,你可以看到我設置爲GridView的適配器。該適配器擴展BaseAdapter ,我粘貼到他的構造函數的寬度和高度我以前計算。
適配器的getView功能包含以下內容:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
LayoutParams param = new LinearLayout.LayoutParams(this.imageWidth,this.imageHeight);
imageView.setLayoutParams(new GridView.LayoutParams(param));
imageView.setAdjustViewBounds(true);
imageView.setScaleType(ScaleType.CENTER_INSIDE);
imageView.setPadding(1,1,1,1);
} else {
imageView = (ImageView) convertView;
}
這樣幾個問題:
- 是有辦法只是爲了配置數據網格是所有的屏幕上顯示,顯示沒有配置圖像寬度或高度時沒有滾動的所有項目?爲什麼我需要爲這麼簡單的任務努力工作?
- 如果我需要計算的東西我自己,有沒有一種方式來獲得實際活動的高度和寬度,所以我不需要添加任何的填充? welp我希望它可以在橫向和縱向上使用所有的尺寸。
我厭倦了改變和玩了很多天的配置,這是迄今爲止我所取得的最好成績,所以關於這個問題的任何信息將不勝感激。
更新<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="*"
android:weightSum="4" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
>
<ImageView
android:id="@+id/imageView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
>
<ImageView
android:id="@+id/imageView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
</TableRow>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
>
<ImageView
android:id="@+id/imageView13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
<ImageView
android:id="@+id/imageView16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/face"
android:onClick="onItemClick"
/>
</TableRow>
</TableLayout>
此XML文件導致中心和垂直方向上擴展一個4幅圖像(這符合所有屏幕,以便可以有更多下文)。
screenshot http://i49.tinypic.com/qn3d6t.png。
我錯過了什麼? :)
謝謝!
幼獅
看起來很神奇!現在就試試吧,讓你知道。謝謝 – ufk 2012-08-12 09:44:44
謝謝。我仍然沒有得到預期的結果。我在這裏發佈了新的xml文件。到目前爲止感謝:) – ufk 2012-08-12 19:13:51
ohh ..我還添加weightSum = 4到每個圖像的tableRow和layout_weight = 1。看起來像現在起作用。測試。 – ufk 2012-08-12 19:15:57