質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

3393閲覧

Viewを上下に分割表示をさせたい、layout_1、layout_2のどちらかしか表示されない

theq

総合スコア18

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/06/14 04:00

今日は、Viewの表示に関する質問です、宜しくお願いします。
Androidで Viewを上下に分割表示をさせたいと考え、
(layout_1の下側にlayout_2を張り付ける?)
他のサイトも色々と参考にしながら、「setContentView( )」と
「、addContentView( )」メソッドを使って、コードを書きまし
たが、うまく表示されません。

layout_1、layout_2のどちらかしか表示されません。

文法的にはエラ―は出ていないのですが、何が原因かが分かりません。
詳しい方、宜しくお願い致します。
また、Full画面表示にしたいのですが、どうもタイトルが
画面表示されます。
この原因もわかりません、宜しくお願いします。


public class MainActivity extends AppCompatActivity
{
private TextView textView ;
@Override
protected void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState ) ;
//Full画面の設定
getWindow().addFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN ) ;
requestWindowFeature( Window.FEATURE_NO_TITLE ) ;
// リニアレイアウトの設定
LinearLayout layout_1 = new LinearLayout( this ) ;
// orientationは垂直方向
layout_1.setOrientation( LinearLayout.VERTICAL);
// Layoutの横・縦幅の指定
layout_1.setLayoutParams
(
//LayoutParamsの設定(その1)
new LinearLayout.LayoutParams
(
LinearLayout.LayoutParams.MATCH_PARENT ,
LinearLayout.LayoutParams.MATCH_PARENT
)
) ;
layout_1.setBackgroundColor( Color.rgb( 0xdd , 0xff , 0xee ) ) ;
//このクラスに Layoutを引数にして ContentViewをsetする
setContentView( layout_1 ) ;
// textView設定
textView = new TextView( this ) ;
textView.setBackgroundColor( Color.GREEN ) ;
textView.setText( "hello" ) ;
textView.setTextSize( 35 ) ;
textView.setTextColor( Color.RED ) ;
//textLayoutParamsの設定
textView.setLayoutParams
(
new LinearLayout.LayoutParams
(
LinearLayout.LayoutParams.WRAP_CONTENT ,
LinearLayout.LayoutParams.WRAP_CONTENT
)
) ;
layout_1.addView( textView ) ;
// ボタンの設定
Button button = new Button( this ) ;
button.setBackgroundColor( Color.MAGENTA ) ;
button.setWidth( 800 ) ;
button.setText( "button" ) ;
button.setTextColor( Color.BLUE ) ;
button.setTextSize( 45 ) ;
button.setLayoutParams
(
new LinearLayout.LayoutParams
(
LinearLayout.LayoutParams.WRAP_CONTENT ,
LinearLayout.LayoutParams.WRAP_CONTENT
)
) ;
layout_1.addView( button ) ;
//--View _2 layout_2--------------------
// リニアレイアウトの設定
LinearLayout layout_2 = new LinearLayout( this ) ;
// orientationは垂直方向
layout_2.setOrientation( LinearLayout.VERTICAL);
// Layoutの横・縦幅の指定
layout_2.setLayoutParams
(
//LayoutParamsの設定(その1)
new LinearLayout.LayoutParams
(
LinearLayout.LayoutParams.WRAP_CONTENT ,
LinearLayout.LayoutParams.WRAP_CONTENT
)
) ;
layout_2.setBackgroundColor( Color.CYAN ) ;
//このクラスに Layoutを引数にして ContentViewをsetする
this.addContentView( layout_2 , new LinearLayout.LayoutParams
(
LinearLayout.LayoutParams.WRAP_CONTENT ,
LinearLayout.LayoutParams.WRAP_CONTENT
)
) ;
Button button2 = new Button( this ) ;
button.setBackgroundColor( Color.YELLOW ) ;
button.setWidth( 800 ) ;
button.setText( "button2" ) ;
button.setTextColor( Color.BLUE ) ;
button.setTextSize( 45 ) ;
button.setLayoutParams( new LinearLayout.LayoutParams
(
LinearLayout.LayoutParams.WRAP_CONTENT ,
LinearLayout.LayoutParams.WRAP_CONTENT
)
) ;
layout_2.addView( button2 ) ;
Button button3 = new Button( this ) ;
button.setBackgroundColor( Color.RED ) ;
button.setWidth( 1200 ) ;
button.setText( "button3" ) ;
button.setTextColor( Color.BLUE ) ;
button.setTextSize( 70 ) ;
button.setLayoutParams
(
new LinearLayout.LayoutParams
(
LinearLayout.LayoutParams.WRAP_CONTENT ,
LinearLayout.LayoutParams.WRAP_CONTENT
)
) ;
layout_2.addView( button3 ) ;
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keicha_hrs

2018/06/14 04:46 編集

質問入力フォームの<code>というボタンを押すと、コード修飾用のMarkdownの雛形が出てきます。「コード」と表示された部分にソースコードを記述してください。「ここに言語を入力」はその言語(ここではJava)に書き換えてください。コード用修飾をかければ、左詰めにされずインデントをつけて表示できます。すべて左詰めでは閲覧する方も非常に見づらいです。
guest

回答1

0

ベストアンサー

どうもタイトルが画面表示されます。

AppCompatActivityを用いているので、アクションバーの操作もそれ用のsupportRequestWindowFeatureを用いる必要があります。

Java

1 //requestWindowFeature(Window.FEATURE_NO_TITLE); 2 supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

layout_1、layout_2のどちらかしか表示されません。

これは2つのLayoutで構成しようとせず、外枠を司るlayout_1と、そのlayout_1の内側に均等配置するlayout_2とlayout_3という、3つのLayoutで構成するようにすればいいのでは。addContentView()はレイアウトの重ね合わせ表示のためのメソッドなので、これでは均等配置はできないでしょう。

レイアウトの部分についてだけ記せば、

Java

1 // リニアレイアウトの設定 2 LinearLayout layout_1 = new LinearLayout(this); 3 // orientationは垂直方向 4 layout_1.setOrientation(LinearLayout.VERTICAL); 5 // Layoutの横・縦幅の指定 6 layout_1.setLayoutParams( 7 //LayoutParamsの設定(その1) 8 new LinearLayout.LayoutParams( 9 LinearLayout.LayoutParams.MATCH_PARENT, 10 LinearLayout.LayoutParams.MATCH_PARENT 11 ) 12 ); 13 //このクラスに Layoutを引数にして ContentViewをsetする 14 setContentView(layout_1); 15 16 //--View _1 layout_2-------------------- 17 // リニアレイアウトの設定 18 LinearLayout layout_2 = new LinearLayout(this); 19 // orientationは垂直方向 20 layout_2.setOrientation(LinearLayout.VERTICAL); 21 layout_2.setLayoutParams( 22 //LayoutParamsの設定(その1) 23 new LinearLayout.LayoutParams( 24 LinearLayout.LayoutParams.MATCH_PARENT, 25 LinearLayout.LayoutParams.MATCH_PARENT, 26 1.0f // 比率 27 ) 28 ); 29 layout_2.setBackgroundColor(Color.rgb(0xdd, 0xff, 0xee)); 30 layout_1.addView(layout_2); 31 32 //--View _2 layout_3-------------------- 33 // リニアレイアウトの設定 34 LinearLayout layout_3 = new LinearLayout(this); 35 // orientationは垂直方向 36 layout_3.setOrientation(LinearLayout.VERTICAL); 37 // Layoutの横・縦幅の指定 38 layout_3.setLayoutParams( 39 //LayoutParamsの設定(その1) 40 new LinearLayout.LayoutParams( 41 LinearLayout.LayoutParams.MATCH_PARENT, 42 LinearLayout.LayoutParams.MATCH_PARENT, 43 1.0f // 比率 44 ) 45 ); 46 layout_3.setBackgroundColor(Color.CYAN); 47 layout_1.addView(layout_3);

のような感じで、layout_2およびlayout_3にはLinearLayout.LayoutParams()の第3引数として比率を設定します。今回は均等なので1:1ですね。数値を変えれば、1:2とかもできます。

このlayout_2およびlayout_3をlayout_1にaddView()します。後は、ボタンやテキストをlayout_2やlayout_3にaddView()していけば、想定通りになると思います。

投稿2018/06/14 06:08

編集2018/06/14 06:12
keicha_hrs

総合スコア6766

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

theq

2018/06/15 03:56

keicha_hrsさん、回答有り難う御座います。 何とかうまく表示させることが出来ました。 ところで >AppCompatActivityを用いているので、・・・・・ とありましたが、 「//requestWindowFeature(Window.FEATURE_NO_TITLE);」を使うときには、 どのクラスを継承した場合なのでしょうか。 もう一点の質問ですが、 >addContentView()はレイアウトの重ね合わせ表示のためのメソ ッドなので、これでは均等配置はできないでしょう。 # addContentView()は具体的には、どのような場合に使用するのでしょうか。 以上、宜しくお願い致します。
keicha_hrs

2018/06/15 09:22

> どのクラスを継承した場合なのでしょうか。 単なるActivityです。requestWindowFeature()も、Activityクラスのメソッドです。対して、AppCompatActivityはSupport Libraryによって提供される機能です。android.supportから始まるパッケージ名で提供される機能は全てSupport Libraryによるものです。FragmentやToolbarなども同様ですが、Support Libraryによるオブジェクトを操作するには、それ用のメソッドを用いなければ同じようにアプリが落ちます。 addContentView()は有効に使ったことがないので、どういう場面で有用なのかはよくわかりません。
theq

2018/06/18 02:28

keicha_hrsさん、回答有り難う御座いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問