• 締切済み

AndroidアプリのViewのサイズ変更

Androidアプリの開発をしています。 Viewの幅と高さを画面サイズなどに合わせて変更したいです。 LayoutのXMLで作成した各Viewを後からサイズ変更はできないのでしょうか? サンプルソースを見ると、コード上でViewを作成・追加しているものしかなかったので、そうなのかなと。。。 +-------- | |ListView | +-------- |Button +-------- こんな感じで画面に一覧とボタンを配置したいのです 全体をRelativeLayoutにして一覧をTOP、ボタンを入れたLinearLayoutをBOTTOMに指定しています。 ListViewの高さをWRAPに指定していたのですが自動で画面の高さ-ボタンの高さにはしてくれませんでした。 なので、自分でやるしかないのかな?という状況です。 各Viewのサイズが決定した後(onWindowFocusChangedあたり?)でListViewを高さ計算して作成する ・・・めんどくさい(笑) いい方法があったら教えてください。

  • Java
  • 回答数1
  • ありがとう数4

みんなの回答

noname#147388
noname#147388
回答No.1

FILL とか layout_weigth ハ?

関連するQ&A

  • Android javaでのTextView

    Android javaの質問です。 よろしければ教えてください。 レイアウト構成として、一番上にボタン、中央にテキストビュー、一番下にボタン。 といった感じです。 ボタンの配置はうまくいくのですが、テキストビューがうまく配置されません。 というのも、ここでは省略して書いてませんが、テキストBOXにて文字が入力されたらテキストビューに表示される。 といった仕組みですが、上下のボタンの上に文字が重なってしまいます。 ですので、テキストビュー範囲をを上下ボタンまでとしたいです。 できれば、文字表示も入力されたらLINEのように下から上へと表示されるようにしたいです。 -------省略-------- final int ID_TOP = 1; final int ID_CENTER =2; final int ID_BOTTOM = 3; RelativeLayout layout = new RelativeLayout(this); //上ボタン Button btnTop = new Button(this); btnTop.setId(ID_TOP); btnTop.setText("Top"); RelativeLayout.LayoutParams prmTop = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); prmTop.addRule(RelativeLayout.ALIGN_PARENT_TOP); btnTop.setLayoutParams(prmTop); layout.addView(btnTop); //テキストビュー lblReceive=new TextView(this); lblReceive..setId(ID_CENTER); lblReceive.setText(""); lblReceive.setTextSize(16.0f); lblReceive.setTextColor(Color.rgb(0,0,0)); RelativeLayout.LayoutParams prmCenter = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); prmCenter.addRule(RelativeLayout.CENTER_IN_PARENT); btnCenter.setLayoutParams(prmCenter); layout.addView(lblReceive) //下ボタン Button btnBottom = new Button(this); btnBottom.setId(ID_BOTTOM); btnBottom.setText("Bottom"); RelativeLayout.LayoutParams prmBottom = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); prmBottom.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); btnBottom.setLayoutParams(prmBottom); layout.addView(btnBottom); -------省略-------- よろしくお願いします。

  • Androidアプリ Listviewが

    アドバイスください。初心者です。Listviewを作りたいだけなんです。”データがありません”と表示されてしまいます・・。 ●layout(.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <TextView android:id="@+id/android:empty" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="データが存在しません"/> </LinearLayout> ●listview(.java) import android.app.Activity; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; //ListActivityを継承 import com.example.yamato.myapplication001.R; public class listview extends ListActivity { private String[] items = { "a10", "a11", "a21", "b10" }; //(2) // private String[] items = {};(2) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //リストビューを含むレイアウト指定(1) setContentView(R.layout.activity_main_activity001); // ArrayAdapterオブジェクトの生成 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); // Adapterの指定 setListAdapter(adapter); // ListActivity内部にあるListViewオブジェクトを取得する場合 ListView listView = getListView(); // ListViewオブジェクトを取得したので以下のメソッド等が利用できる // 選択する要素の位置の指定 listView.setSelection(3); } } ソースは参考本からです。

  • Androidの画面レイアウトがくずれます

    同じサイズの画像を並べても、シミュレータで表示するとばらばらのサイズになってしまいます。 もう1ヶ月以上解決できなくて困っています。 写真はXMLベースで4つの画像を表示した結果です。 シミュレータでやってもほぼ同じ結果です。 元々の画像では、茶色と緑が同じ幅で、ピンクと青が同じ幅です。4つの画像とも高さは一緒です。 サイズの変更等はしてません。 GraphicalLayoutoは5.1inWVGA、シミュレータはWVGA854、Android2.3.3です ソースです。 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/left"/> <LinearLayout android:id="@+id/center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/left" android:orientation="vertical"> <ImageView android:id="@+id/top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/top"/> <ImageView android:id="@+id/bottom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/bottom"/> </LinearLayout> <ImageView android:id="@+id/right" android:layout_height="wrap_content" android:src="@drawable/right" android:layout_toRightOf="@+id/center"/> </RelativeLayout>

  • androidアプリ開発について

    androidアプリ開発初心者です。 やりたいことは、 スタートボタンを押して、自分のお気に入りのページに飛び、(例えばオークションなど)サイトを表示させ、何分間ごとに更新できるループ処理?などができればいいなと考えています。 スタートボタンを押してサイトを表示するまでは何とか作れたのですが、それ以降をどのように作ったらいいのか分かりません。 初心者的な質問で申し訳ないのですが、どのように書いたらよいのか教えてください。 コードはこのようになっています。 <<main.xml>> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="192dp" android:layout_height="wrap_content" android:text="スタート" /> </LinearLayout> <<MainActivity.java>> import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { Button btn =null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ Uri uri =Uri.parse("http://"); Intent intent=new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(uri); startActivity(intent); } }); } @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; } } 長文で申し訳ありません。どうぞ宜しくお願い致します。

  • androidでアプリを作ろうとしてるのですが

    package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; public class InOutTest extends Activity { /** Called when the activity is first created. */ public TextView txtInfo; public EditText edtText; public Button outputbutton; public TextView txtResult; public TextView txtjudge; public String strInch; public String gettext; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウト作成 ここから LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //レイアウトを見えるようにする //レイアウト作成 ここまで //GUI部品作成 ここから // ラベル txtInfo = new TextView(this); txtInfo.setText("check"); strInch = ("check"); layout.addView(txtInfo); // エディタ edtText = new EditText(this); layout.addView(edtText); // ボタン txtResult = new Button(this); txtResult.setText("same or difference"); layout.addView(txtResult); // 結果表示用ラベル txtjudge = new TextView(this); txtjudge.setText("check"); layout.addView(txtjudge); //GUI部品作成 ここまで txtResult.setOnClickListener(new OnClickListener(){ public void onClick(View v) { gettext = edtText.toString(); if (strInch==gettext){ txtjudge.setText("ok"); } }; }); }} 上のプログラムで strInchに入ってるデータとgettextで取得した文章を比較して同じなら txtjudgeにOKと引き渡して表示させたいのですがうまく動きません 何方かどうぞよろしくお願い致します

    • ベストアンサー
    • Java
  • androidアプリが強制終了してしまいます。

    オプションメニューボタンの「MENU_ITEM0」を押すと、他の機能が呼び出されずに強制終了でエラーになってしまいます。 ・呼び出すソースファイルです。 「public class CogoterActivity extends Activity { //メニューアイテムID private static final int MENU_ITEM0=0, MENU_ITEM1=1; //アクティビティ起動時に呼ばれる @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); requestWindowFeature(Window.FEATURE_NO_TITLE); //リスト要素の情報群の生成 List<ListItem> items=new ArrayList<ListItem>(); for (int i=0;i<50;i++) { items.add(new ListItem(res2bmp(this,R.drawable.icon),"項目"+i)); } //リストビューの設定 ListView listView=new ListView(this); listView.setScrollingCacheEnabled(false); listView.setAdapter(new ListAdapter(this,items)); setContentView(listView); new TextView(this); } public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); //メニューアイテム0の追加 MenuItem item0=menu.add(0,MENU_ITEM0,0,"ぶつぶつ"); item0.setIcon(android.R.drawable.ic_menu_edit); //メニューアイテム1の追加 MenuItem item1=menu.add(0,MENU_ITEM1,0,"ぶくぶく"); item1.setIcon(android.R.drawable.ic_menu_more); return true; } //メニューアイテム選択イベントの処理 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_ITEM0: Intent intent = new Intent(this, cogoter.project.MyActivity.class); startActivity(intent); return true; case MENU_ITEM1: showDialog(this,"","ぶくぶくを押した"); return true; } return true; } //ダイアログの表示 private static void showDialog(Context context,String title,String text) { AlertDialog.Builder ad=new AlertDialog.Builder(context); ad.setTitle(title); ad.setMessage(text); ad.setPositiveButton("OK",null); ad.show(); } //リソース→ビットマップ public static Bitmap res2bmp(Context context,int resID) { return BitmapFactory.decodeResource( context.getResources(),resID); } }」 ・呼び出されるソースコード 「public class MyActivity extends Activity implements View.OnClickListener { private final static int WC=LinearLayout.LayoutParams.WRAP_CONTENT; private final static int FP=LinearLayout.LayoutParams.FILL_PARENT; private EditText editText;//エディットテキスト //アクティビティ起動時に呼ばれる @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); requestWindowFeature(Window.FEATURE_NO_TITLE); //戻り値の指定(6) setResult(Activity.RESULT_CANCELED); //インテントからのパラメータ取得(5) String text=""; Bundle extras=getIntent().getExtras(); if (extras!=null) text=extras.getString("text"); //レイアウトの生成 LinearLayout layout=new LinearLayout(this); layout.setBackgroundColor(Color.rgb(255,255,255)); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //OKボタンの生成 Button button=new Button(this); button.setText("OK"); button.setOnClickListener(this); button.setLayoutParams(new LinearLayout.LayoutParams(WC,WC)); layout.addView(button); //エディットテキストの生成 editText=new EditText(this); editText.setText(text); editText.setLayoutParams(new LinearLayout.LayoutParams(FP,WC)); layout.addView(editText); } //ボタンクリック時に呼ばれる public void onClick(View v) { //戻り値の指定(6) Intent intent =new Intent(); intent.putExtra("text",editText.getText().toString()); setResult(Activity.RESULT_OK,intent); //アクティビティの終了(7) finish(); } }」

  • Android開発 Eclipse(超初心者)

    Eclipseの使い方がわかりません。 eclipseをインストールしてプロジェクトを作成しAVDの仮想デバイスを適当に作成し AVD仮想デバイス ターゲット:Android4.0-APILevel14 SDカード:サイズ 66MiB スキン:ビルトイン WVGA800 package com.example.android.hello.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; public class Hello15 extends Activity{ //表示用のテキストとボタンを宣言 --- private TextView txtCaption; private Button btnHello; public void OnCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); //レイアウトを作成 LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //テキストを追加 txtCaption = new TextView(this); txtCaption.setText("Click Button!"); layout.addView(txtCaption); //ボタンを追加 btnHello = new Button(this); btnHello.setText("Button"); layout.addView(btnHello); //イベントを設定 btnHello.setOnClickListener(new OnClickListener(){ public void onClick(View v){ txtCaption.setText("Hello, Android!"); } }); } } サンプルで上記のようなソースを作成して 実行したのですが 以前は Android Application Java Applet Java Application など選択肢が出てたのですが仮想デバイスを設定した 辺りからでなくなり実行して少し経つと ←画面に『android』という文字が →画面にキーボードのようなものがでてきて 3分ぐらいまつと←画面が携帯画面に変化します 上記のプログラムではボタンの生成とメッセージがでてくるはずが それらしきものがありません。これらはどこに出てくるのでしょうか? 動かし方すらよくわかってないのでお解説おねがいいたしもうす;

  • Androidアプリ・SDKでの実行時エラー

    初めてアンドロイドアプリの開発をしています(多言語のプログラミング経験はありますが、JAVAは初めてです)。Eclipseで開発を行っていますが、ボタンをクリックしたら画面遷移をする、という処理を追加したところ、Android SDKで実行した際に 「アプリ名(パッケージ名)が予期せず停止しました。やり直してください。」 と出て、トップの画面も表示されなくなってしまいました。なお、Eclipse上ではエラーなどが出ていません。原因が解らず困っています。何かわかる方がいらっしゃいましたらお教え下さい。 以下がソースになります。 ■トップのActivity--------------------- package jp.xxxxx.xxxxx; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ボタンを定義 Button btn1 = (Button) findViewById(R.id.btn1); //クリックイベント btn1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent( getApplicationContext() , SubActivity.class); startActivity(intent); } }); } } ■トップ画面のXML--------------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"> <ImageView android:id="@+id/topLogo" android:src="@drawable/logo" /> <LinearLayout android:id="@+id/linearLayout1"> <TextView android:id="@+id/btn1" android:text="@string/btn1text"></TextView> </LinearLayout> </LinearLayout> ■トップのAndroidManifest.xml--------------------- <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.xxxxx.xxxxx" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:label="@string/app_name" android:name="MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:label="@string/screenName2" android:name="SubActivity"> </activity> </application> </manifest> なお、Activityの「//ボタンを定義」以下をコメントアウトした際には画面は出てきます。何か初歩的な間違いをしているかもしれませんが、どうかよろしくお願いします。

    • ベストアンサー
    • Java
  • Androidの画面表示のタイミングについて

    androidで、画面のタッチイベントを感知し、画像やボタンを表示させたいと考えています。 その際、ボタンの表示を遅らせるため、sleep()を入れて、表示タイミングをずらそうとしましたが、うまくいかず、ボタンが遅れて表示されるのではなく、画面全体がsleep()で指定した時間分遅れて表示されます。 ファンクションの終了時に画面の表示がまとめて行われるようですが、これはJAVAの仕様なのでしょうか? //タッチイベント public boolean onTouchEvent(MotionEvent event){ //背景画像の表示 final LinearLayout layout= (LinearLayout)findViewById(R.id.Layout); layout.setBackgroundResource(R.drawable.gazou1); //ボタンの表示を遅らせるためスリープ try{ Thread.sleep(3000); }catch (InterruptedException e) { System.out.println(e); } //ボタンの表示 Button a = (Button)findViewById(R.id.button_id); a.setVisibility(View.VISIBLE); return true; } ようろしくお願いいたします。

    • ベストアンサー
    • Java
  • 学校の課題でアンドロイドアプリを作っています。

    カメラをアプリを使ったアプリなのですが、 http://techbooster.jpn.org/andriod/application/295/さんのサイトのソースを改良して アプリを作ろうと思っています。 <SurfaceView android:id="@+id/surface_view" android:layout_width="100dp" android:layout_height="wrap_content" /> </LinearLayout> のように横幅を変えたとき、今のままだと狭くなったSurfaceViewに プレビュー画像が圧縮されてしまいます。 どのようにすれば、圧縮されずに映っていないところ以外を そのままのサイズで表示できるのでしょうか? いろいろ調べたのですがわかりません。

専門家に質問してみよう