2011-06-28 19 views
3

私のアプリのボタンの配列を作成しました。これらのボタンの配列のレイアウトを管理することはできません。ブーンのイメージまたはチャネージの幅をデバイスの水平画面から外します。ボタンの配列を管理する方法はありますので、どのスクリーンサイズにも収まるようになります。 XMLのためのレイアウト方法画面サイズに合わせたボタンの配列

コード:Java用

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
    android:id="@+id/liVLayout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    </LinearLayout> 

    <LinearLayout 
    android:id="@+id/liVLayout1" 
    android:orientation="vertical" 
    android:layout_below="@+id/liVLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <TextView android:text="All Contacts" 
     android:id="@+id/textView1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textColor="@android:color/black" 
     android:background="#808080"> 
    </TextView> 
    </LinearLayout> 
</RelativeLayout> 

コード:

public class CalenderForm extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    createCalender(); 
} 
public void createCalender() 
{ 
    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams 
    (
      RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT 
    ); 
    LinearLayout layoutVertical = (LinearLayout) findViewById(R.id.liVLayout); 
    LinearLayout rowLayout=null; 
    Button[][] buttons = new Button[6][7]; 
    int count=43; 
    for (int i = 0; i<6; i++) 
    { 
     if(count%7==1) 
     { 
      rowLayout = new LinearLayout(this); 
      layoutVertical.addView(rowLayout,p); 
      count=count-7; 
     } 
     for(int j=0;j<7;j++) 
     { 
      buttons[i][j]=new Button(this); 
      buttons[i][j].setBackgroundResource(R.drawable.icon); 
      rowLayout.addView(buttons[i][j], p); 
     } 
    } 
} 
画像を挿入するbefor

}

スナップショット:画像を挿入するbefor

enter image description here

スナップショット:

enter image description here

+0

1.ボタンの間の間隔を減らしてみてください。 2.相対レイアウトを使用してみてください。 – Vinay

+0

私は相対レイアウトを使用すると、1つのボタンだけが表示されます。 – AndroidDev

+0

相対レイアウトで必要なボタンをいくつでも追加できます。その他の問題があるかもしれません。 – Vinay

答えて

0

の音だけ線形とボタンのlayout_weightのこのcode.useのweightsumプロパティを交換してください。

package com.android.manager; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.Button; 
import android.widget.LinearLayout; 

public class MainActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     createCalender(); 
    } 
    public void createCalender() 
    { 
     LinearLayout layoutVertical = (LinearLayout) findViewById(R.id.liVLayout); 
     LinearLayout rowLayout=null; 
     Button[][] buttons = new Button[6][7]; 
     int count=43; 
     **LayoutParams param = new LinearLayout.LayoutParams(
       LayoutParams.FILL_PARENT, 
       LayoutParams.FILL_PARENT,1);** 

     for (int i = 0; i<6; i++) 
     { 
      if(count%7==1) 
      { 
       rowLayout = new LinearLayout(this); 
       **rowLayout.setWeightSum(7);** 
       **layoutVertical.addView(rowLayout,param);** 
       count=count-7; 
      } 
      for(int j=0;j<7;j++) 
      { 
       buttons[i][j]=new Button(this); 
       buttons[i][j].setBackgroundResource(R.drawable.icon); 
       **rowLayout.addView(buttons[i][j],param);** 
      } 
     } 
    } 

} 

enter image description here

+0

おかげさまで働いてくれてありがとうございました。それ以上のことは、画面サイズごとに自動的に調整されます。それでは別のことをしなければなりません。 – AndroidDev

+0

hiendendra..one question ..私は各ボタンの背景画像を非アクティブthats menas私はボタンをクリックすることができません..なぜこれが起こった.. – AndroidDev

1

私はこれが直接、ちょうどあなたの質問に答えるが、私はありません知っていますあなたを助けたい。

  1. あなたは理由スキンの異なるROMの上の問題を抱えているだろう、など
  2. あなたが完全に制御を持っていません:あなたは本当にボタンの多くを作成し、カレンダーアプリを構築している場合は、進むべき道ではありません
  3. スペースの問題に遭遇する
  4. 多くのメモリ(たくさんのButtonオブジェクトなど)が割り当てられ、アプリの処理速度が遅くなります。

私はあなた自身のカスタムViewを実装することをお勧めします。私は最近、自分自身でカレンダーアプリに取り組み、その月にGridViewを使ってみましたが、実際にうまくいきませんでした(最終的に自分自身でViewを作成しました。

非常に便利なのは、AndroidのデフォルトのオープンソースCalendarアプリです。月表示と日/週表示の両方にソースコードがあります(時間尺度など)。

+0

yeh..what you私の任務は、ボタンの配列を使用して自分のcuctomカレンダーを作成することです.soは、この – AndroidDev

1

あなたがTableLayoutを試してみて、列を設定できますが巻き付け可能:

は例と素敵なチュートリアルが見つかりました - それは幅だ削減し、他の場合、それはコンテンツだラップする(コラム巻き付け可能を作るために>Android TableLayout Tutorial

をテーブルの列が余りにも多くのスペースを取り、画面からいくつかの列を押している)、setColumnShrinkableを使用して縮小可能とマークします。

は有望

+0

+1に関するリンクだけのためのいくつかの提案を与えてください。それはあまりにもわかりにくいTableLayoutの言葉についての素晴らしい説明でいっぱいです。 –

関連する問題