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

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

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

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

2回答

490閲覧

kotlinについてご教授をお願いします。

you555

総合スコア21

Android

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2017/12/02 01:15

kotlinについて勉強しています。デザインを以下のように設定しています。
//activity_main.xml
イメージ説明

新しくプロジェクトを作成し、デバック起動すると、垂直中央にHello Worldの文字を出して起動してくると思います。

//MainActivity.kt

package com.example.kou.myapplication import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.os.PersistableBundle import android.view.View import android.widget.TextView import kotlinx.android.synthetic.* import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val textView = TextView(this) textView.setText("こんにちは") setContentView(textView) } /* override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { super.onCreate(savedInstanceState, persistentState) val textView = TextView(this) textView.setText("こんにちは") setContentView(textView) } */ override fun onStart() { super.onStart() } override fun onRestart() { super.onRestart() } override fun onPostResume() { super.onPostResume() } override fun onPause() { super.onPause() } override fun onStop() { super.onStop() } override fun onDestroy() { super.onDestroy() } }

このようにソースを変更して、こんにちはと垂直表示したいのですが、実際実行してみると以下のように

イメージ説明

これを垂直中央に寄せたいのですが、どのようにソースを変更すればいいでしょうか。
とても、初歩的な質問ですいません。

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

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

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

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

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

guest

回答2

0

質問者様がレイアウトエディタでtextViewを真ん中に指定しているにもかかわらず、実行すると真ん中には表示されていませんよね?これは、setContentView()を二回実行しているためです。
最初のsetContentView(R.layout.activity_main)が、2回目のsetContentView(textView)によって上書きされてしまい、目的のレイアウトファイルではなくて、textViewのみのレイアウトがviewに付与されています。

基本的にsetContentView()は1回のみと最初は考えていた方が良いです。

解決策としては、まず以下の部分を消します。

kotlin

1 val textView = TextView(this) 2 3 textView.setText("こんにちは") 4 5 setContentView(textView)

そして、以下のようにして、レイアウトエディタで配置したtextViewを取得→文字を設定。という手順を踏んでください。

kotlin

1 val textView = findViewById(R.id.textView) as TextView 2 textView.setText("こんにちは")

投稿2017/12/02 03:58

編集2017/12/02 03:59
hiramekun

総合スコア428

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

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

you555

2017/12/02 10:14

ご回答ありがとうございます。
guest

0

ベストアンサー

先に親となるLayoutコンポーネントを配置し、そのLayout上のどこに配置するかパラメーターを与えた上でTextViewなどのコンポーネントを配置するコードを記述する必要があります。RelativeLayoutを親レイアウトとして配置し、その中央(垂直表示という表現がよくわからないのだけど、画面中央という意味合いでいいのでしょうか?)にTextViewを配置する、というのをKotlinで記述したら、こんな感じかと思います。

Kotlin

1class MainActivity : AppCompatActivity() { 2 3 override fun onCreate(savedInstanceState: Bundle?) { 4 super.onCreate(savedInstanceState) 5 6 val layout = RelativeLayout(this) 7 setContentView(layout) 8 9 val param = RelativeLayout.LayoutParams( 10 ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) 11 param.addRule(RelativeLayout.CENTER_HORIZONTAL) 12 param.addRule(RelativeLayout.CENTER_VERTICAL) 13 14 val textView = TextView(this) 15 textView.layoutParams = param 16 textView.text = "こんにちは" 17 18 layout.addView(textView) 19 } 20}

投稿2017/12/02 02:51

編集2017/12/02 02:59
keicha_hrs

総合スコア6768

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

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

you555

2017/12/02 10:14

ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問