2012-02-21 1 views
1

私はこれを行う方法について何も見つけることができないことに完全にショックを受けました。次の行にドロップダウンするためにイメージをレイアウトにラップするにはどうしたらいいですか?すべてのイメージが表示されるまで、引き続き続けますか?私はボタンとして80x80の画像を使用していますが、多くの人が1つの行に収まる場合は、次の行にそれらをラップして続行してください。それらが終わりに達すると、私はそれが再び包み込みたい。Android Wrapping Buttons

このレイアウトの作成方法を教えてもらえますか?ありがとうございました。あなたが欲しい

+0

どのAPIを使用していますか?このためのテクニックはHoneycomb 3.2 – gobernador

+0

で変更されました。まだ2.2を使用しています。 –

答えて

0
API 12で

以前では、:API 13で

public static final int BUTTON_WIDTH = 80; 
public static final int BUTTON_HEIGHT = 80; 
public static final int SPACING = 8; 

Display display = getWindowManager().getDefaultDisplay(); 
public int screenWidth = display.getWidth(); 
public int screenHeight = display.getHeight();  

//somewhere a drawButton(int y, int x) should be defined 

for (int i = 0, i < screenHeight, i += (BUTTON_HEIGHT + SPACING)) { 
    for (int j = 0, j < screenWidth, j += (BUTTON_WIDTH + SPACING)) { 
     drawButton(i, j); 
    } 
} 

以降、次のように行5-7を置き換える:

Point screen = new Point(); 
getWindowManager().getDefaultDisplay().getSize(screen); 

public int screenWidth = screen.x; 
public int screenHeight = screen.y; 
2

私はあなたが探していることができるものを考えますListAdapterを使ってデータを取得するGridViewです。詳細はhttp://developer.android.com/reference/android/widget/GridView.htmlを参照してください。グリッドを使った簡単なランチャーのデモについては、[Android SDKディレクトリ] /samples/ApiDemos/src/com/example/android/apis/view/Grid1.javaも参照してください。 (下記の完全なコード例)

/* 
* Copyright (C) 2007 The Android Open Source Project 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
*  http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, 
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/ 

package com.example.android.apis.view; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.pm.ResolveInfo; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 

import java.util.List; 

//Need the following import to get access to the app resources, since this 
//class is in a sub-package. 
import com.example.android.apis.R; 


public class Grid1 extends Activity { 

    GridView mGrid; 

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

     loadApps(); // do this in onresume? 

     setContentView(R.layout.grid_1); 
     mGrid = (GridView) findViewById(R.id.myGrid); 
     mGrid.setAdapter(new AppsAdapter()); 
    } 

    private List<ResolveInfo> mApps; 

    private void loadApps() { 
     Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
     mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

     mApps = getPackageManager().queryIntentActivities(mainIntent, 0); 
    } 

    public class AppsAdapter extends BaseAdapter { 
     public AppsAdapter() { 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView i; 

      if (convertView == null) { 
       i = new ImageView(Grid1.this); 
       i.setScaleType(ImageView.ScaleType.FIT_CENTER); 
       i.setLayoutParams(new GridView.LayoutParams(50, 50)); 
      } else { 
       i = (ImageView) convertView; 
      } 

      ResolveInfo info = mApps.get(position); 
      i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager())); 

      return i; 
     } 


     public final int getCount() { 
      return mApps.size(); 
     } 

     public final Object getItem(int position) { 
      return mApps.get(position); 
     } 

     public final long getItemId(int position) { 
      return position; 
     } 
    } 

} 
+0

これは彼が本当に探していた答えです。 GridViewは、問題を解決するアンドロイドの方法です。 –

関連する問題