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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Wear

Android Wearとは、Googleが発表した腕時計型ウェアラブルデバイス(スマートウォッチ)向けのプラットフォームです。GoogleのAndroid OSをベースにしており、情報の入手・管理などを行うことができます。

Android Studio

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

Android Widget

ホームスクリーンウィジェット、またはAndroidアプリケーションのスクリーン上で使用される一般的なユーザインタフェース要素に関連することを指します。

Q&A

解決済

2回答

4191閲覧

Android TextView表示位置について

TakamasaAwai

総合スコア73

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Wear

Android Wearとは、Googleが発表した腕時計型ウェアラブルデバイス(スマートウォッチ)向けのプラットフォームです。GoogleのAndroid OSをベースにしており、情報の入手・管理などを行うことができます。

Android Studio

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

Android Widget

ホームスクリーンウィジェット、またはAndroidアプリケーションのスクリーン上で使用される一般的なユーザインタフェース要素に関連することを指します。

0グッド

0クリップ

投稿2015/06/13 14:52

編集2015/06/14 03:32

![イメージ説明]WIDTH:221TextViewのGravityをランダムにしたかったので、このようなコードを書きました。

lang

1public class MainActivity2 extends Activity { 2 3 public int[]hairetu; 4 public String mondai; 5 public int seikai; 6 int []hairetu2; 7 TextView textView; 8 Random rnd = new Random(); 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_main2); 14 hairetu2 = new int[]{Gravity.CENTER, Gravity.LEFT, Gravity.RIGHT, Gravity.TOP, 15 Gravity.BOTTOM, Gravity.FILL, Gravity.FILL_VERTICAL, Gravity.FILL_HORIZONTAL, 16 Gravity.CENTER_VERTICAL, Gravity.CENTER_VERTICAL, 17 Gravity.TOP | Gravity.CENTER, Gravity.TOP | Gravity.CENTER_HORIZONTAL, Gravity.TOP | Gravity.RIGHT, 18 Gravity.TOP | Gravity.LEFT, Gravity.BOTTOM | Gravity.LEFT, Gravity.BOTTOM | Gravity.RIGHT}; 19 20 textView = (TextView) findViewById(R.id.t); 21 start(); 22 int[] newlist = new int[hairetu2.length]; //ランダム並べ替え後の定数配列 23 for (int i = 0; i < hairetu2.length; i++) { 24 while (true) { 25 int a = rnd.nextInt(hairetu2.length); 26 newlist[i] = hairetu2[a]; 27 break; 28 } 29 } 30 31 } 32 public void start() { 33//省略 34 35 hairetu2 = new int[16]; 36 hairetu2[0] = rnd.nextInt(hairetu2.length); 37 hairetu2[1] = rnd.nextInt(hairetu2.length); 38 hairetu2[2] = rnd.nextInt(hairetu2.length); 39 hairetu2[3] = rnd.nextInt(hairetu2.length); 40 hairetu2[4] = rnd.nextInt(hairetu2.length); 41 hairetu2[5] = rnd.nextInt(hairetu2.length); 42 hairetu2[6] = rnd.nextInt(hairetu2.length); 43 hairetu2[7] = rnd.nextInt(hairetu2.length); 44 hairetu2[8] = rnd.nextInt(hairetu2.length); 45 hairetu2[9] = rnd.nextInt(hairetu2.length); 46 hairetu2[10] = rnd.nextInt(hairetu2.length); 47 hairetu2[11] = rnd.nextInt(hairetu2.length); 48 hairetu2[12] = rnd.nextInt(hairetu2.length); 49 hairetu2[13] = rnd.nextInt(hairetu2.length); 50 hairetu2[14] = rnd.nextInt(hairetu2.length); 51 hairetu2[15] = rnd.nextInt(hairetu2.length); 52 53 textView.setGravity(hairetu2[rnd.nextInt(hairetu2.length)]); 54 55 }

しかし、プログラムを実行したら、TextViewは上の部分(TOP|CENTERとTOP|LEFTとTOP|RIGHY)だけで移動して、下には移動しません。xmlはこんな感じです。

lang

1<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 3 android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 4 android:paddingRight="@dimen/activity_horizontal_margin" 5 android:paddingTop="@dimen/activity_vertical_margin" 6 android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" 7 android:orientation="vertical"> 8 9 <TextView 10 android:id="@+id/t" 11 android:text="1234" 12 android:textSize="45sp" 13 android:layout_width="match_parent" 14 android:layout_height="0dp" 15 android:layout_weight="2" 16 /> 17 18 <LinearLayout 19 android:orientation="horizontal" 20 android:layout_width="match_parent" 21 android:layout_height="0dp" 22 android:layout_weight="1"> 23 /*省略 ボタンなどが入っています**/ 24</LinearLayout> 25

なぜでしょうか?
TextViewは写真の通りです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

start()のメソッドでやっているのは,hairetu2を初期化して,それぞれに0~15のランダムな整数を入れ,
その中からさらにランダムにGravityの値を取ってセットしている,という事になります.
こうなると最初に設定したGravityクラスの定数の配列は全く意味を成さなくなります.

15以下でGravityの値として意味を持つのが、
0:NO_GRAVITY
1:CENTER_HORIZONTAL
3:LEFT
5:RIGHT
これだけです.他の値はGravityの値として符合しないので無視されるのでしょう.
このため,上だけで移動する,という現象が起きます.

単純にランダムにGravity値を設定したいだけなら,hairetu2を全くいじらずに,

lang

1textView.setGravity(hairetu2[rnd.nextInt(hairetu2.length)]);

これだけでいいです.
前の質問で無駄に並び替えをしたりしましたが要りません.
start()メソッドの

lang

1 hairetu2 = new int[16]; 2 . 3 . 4 . 5 hairetu2[15] = rnd.nextInt(hairetu2.length);

も不要です。

投稿2015/06/14 03:55

編集2015/06/14 06:06
swordone

総合スコア20651

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

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

TakamasaAwai

2015/06/14 07:22

毎度本当にありがとうございます。できました。
guest

0

この場合、TextViewに設定しなければならないのはandroid:gravityではなくandroid:layout_gravityです。

投稿2015/06/13 19:13

YukiYoshida

総合スコア93

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

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

TakamasaAwai

2015/06/14 03:33

ご回答誠のありがとうございます。TextViewはこの範囲なので、Gravityだと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問