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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

1回答

1162閲覧

xmlファイルで作成したレイアウトをJavaから実現する

nagomi72

総合スコア51

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2019/01/08 12:08

以下に記載するxmlファイルをJavaコードに置き換えたいと考えいています。

activity_main

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="こいつは画面に表示される"/> </LinearLayout> <LinearLayout android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="left" android:background="#333" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="メニュー" android:textColor="#ff0000"/> </LinearLayout> </android.support.v4.widget.DrawerLayout>

これを実行したときは2つ目のLinearLayoutはサイドメニューに表示されます。

イメージ説明

左からスワイプしたとき

上記のレイアウトをはJavaで実現しようと試みたのですが、サイドメニューに隠れず既に表示された状態となっています。

package com.example.sidemenutest; import android.app.Activity; import android.graphics.Color; import android.support.constraint.ConstraintLayout; import android.support.v4.widget.DrawerLayout; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; public class MainActivity extends Activity { private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; private final int MP = ViewGroup.LayoutParams.MATCH_PARENT; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); DrawerLayout drawerLayout = new DrawerLayout(this); drawerLayout.setLayoutParams(new DrawerLayout.LayoutParams(MP,WC)); // ConstraintLayout constraintLayout = new ConstraintLayout(this); setContentView(drawerLayout); LinearLayout firstLayout = new LinearLayout(this); firstLayout.setLayoutParams(new LinearLayout.LayoutParams(MP, MP)); firstLayout.setOrientation(LinearLayout.VERTICAL); drawerLayout.addView(firstLayout); TextView textView = new TextView(this); textView.setText("こいつは画面に表示される"); firstLayout.addView(textView, new LinearLayout.LayoutParams(WC, WC)); //こいつがメニューとして隠れてほしいが現状表示されてしまっている LinearLayout secondLayout = new LinearLayout(this); secondLayout.setOrientation(LinearLayout.VERTICAL); secondLayout.setBackgroundColor(Color.RED); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(240, MP); //layout_gravity = "left"相当だと思っている lp.gravity = Gravity.LEFT; secondLayout.setLayoutParams(lp); drawerLayout.addView(secondLayout); TextView secondText = new TextView(this); secondText.setText("メニュー"); secondText.setTextColor(Color.BLUE); secondText.setBackgroundColor(Color.GREEN); secondLayout.addView(secondText,new LinearLayout.LayoutParams(WC,WC)); } }

イメージ説明

どの部分を変えれば、activity_mainと同じレイアウトが実現できるのでしょうか。
ご教授の程よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

LayoutParamsは自身のクラスに属するものではなく、親Viewのクラスに属するものを指定する必要があります。
親Viewのクラスが何かわからない場合は、ViewGroup.LayoutParamsを使えばOKです。

なので、ご質問のコードの場合は、

java

1drawerLayout.setLayoutParams(new ViewGroup.LayoutParams(MP,WC)); 2 3... 4 5firstLayout.setLayoutParams(new DrawerLayout.LayoutParams(MP, MP)); 6 7... 8 9DrawerLayout.LayoutParams lp = new DrawerLayout.LayoutParams(240, MP); 10lp.gravity = Gravity.LEFT; 11secondLayout.setLayoutParams(lp);

というのが正しいLayoutParamsの指定です。

投稿2019/01/08 23:45

kakajika

総合スコア3131

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

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

nagomi72

2019/01/09 03:57

LayoutParamsは親Viewのクラスに属するものを指定する必要があることを存じておりませんでした。 LayoutParamsの指定を親ViewであるDrawerLayoutにしたところ、実現することができました。 ご教授頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問