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

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

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

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

Android Studio

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

Q&A

解決済

2回答

1676閲覧

Fragment上で、アニメーションしたい。

aruko

総合スコア47

Java

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

Android Studio

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

0グッド

0クリップ

投稿2021/11/21 08:39

編集2021/11/22 09:15

fragmentを使用してゲーム作りをしています。
fragment上でアニメーションを使用したいです。
普通にactivityでアニメーションするやり方をそのまま使用してみたら、エラーになりました。

java

1import android.animation.AnimatorInflater; 2import android.animation.AnimatorSet; 3import android.os.Bundle; 4import android.view.*; 5import android.widget.TextView; 6 7import androidx.annotation.*; 8import androidx.fragment.app.Fragment; 9import androidx.lifecycle.ViewModelProvider; 10 11public class MainFragment extends Fragment { 12 static AnimatorSet animator1; 13 TextView frma_tv1; 14 TextView frma_tv2; 15 TextView frma_tv3; 16 TextView frma_tv4; 17 TextView frma_tv5; 18 @Override 19 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 20 return inflater.inflate(R.layout.fragment_main, container, false); 21 } 22 23 @Override 24 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 25 super.onViewCreated(view, savedInstanceState); 26 27 MainViewModel vm = new ViewModelProvider(requireActivity()).get(MainViewModel.class); 28 animator1= (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.animator1); 29 animator1.setTarget(frma_tv1); 30 animator1.start(); 31 } 32}

animator1= (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.animator1);
animator1.setTarget(frma_tv1);
animator1.start();
thisがエラーになります。
よく分からないので、public View onCreateView の方に
animator1= (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.animator1);
animator1.setTarget(frma_tv1);
animator1.start();
を入れてみましたが、同様にエラーです。

どのようにしたらよいか、教えていただきたいです。


★追加 MainFragment.javaです。
(AnimatorSet)animator1,(TextView)frma_tv1は、MainActivity.javaで宣言しています。

java

1import android.animation.AnimatorInflater; 2import android.animation.AnimatorSet; 3import android.os.Bundle; 4import android.view.*; 5import android.view.animation.Animation; 6import android.view.animation.AnimationUtils; 7import android.widget.TextView; 8 9import androidx.annotation.*; 10import androidx.fragment.app.Fragment; 11import androidx.lifecycle.ViewModelProvider; 12 13import static tmaruko.okura.jiisan.MainActivity.animator1; 14import static tmaruko.okura.jiisan.MainActivity.frma_tv1; 15 16public class MainFragment extends Fragment { 17 18 @Override 19 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 20 return inflater.inflate(R.layout.fragment_main, container, false); 21 } 22 23 @Override 24 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 25 super.onViewCreated(view, savedInstanceState); 26 27 MainViewModel vm = new ViewModelProvider(requireActivity()).get(MainViewModel.class); 28 animator1=(AnimatorSet)AnimatorInflater.loadAnimator(requireContext(),R.animator.animator1); 29 animator1.setTarget(frma_tv1); 30 animator1.start(); 31 } 32}

animator1です。これは、前回作成したスマホアプリで使用したものです。
とりあえずアニメーションすればよいので、何でもいいですが。

java

1<?xml version="1.0" encoding="utf-8"?> 2<set xmlns:android="http://schemas.android.com/apk/res/android" 3 android:ordering="sequentially"> 4 <set android:ordering="together"> 5 <objectAnimator 6 android:duration="500" 7 android:propertyName="scaleX" 8 android:valueFrom="1.0" 9 android:valueTo="1.0" /> 10 <objectAnimator 11 android:duration="500" 12 android:propertyName="scaleY" 13 android:valueFrom="1.0" 14 android:valueTo="1.0"/> 15 </set> 16 <set android:ordering="together"> 17 <objectAnimator 18 android:interpolator="@android:anim/accelerate_interpolator" 19 android:duration="100" 20 android:propertyName="scaleX" 21 android:valueFrom="1.0" 22 android:valueTo="5.0" /> 23 <objectAnimator 24 android:interpolator="@android:anim/accelerate_interpolator" 25 android:duration="100" 26 android:propertyName="scaleY" 27 android:valueFrom="1.0" 28 android:valueTo="5.0"/> 29 </set> 30 <set> 31 <objectAnimator 32 android:duration="200" 33 android:propertyName="scaleX" 34 android:valueFrom="5.0" 35 android:valueTo="0.1" /> 36 <objectAnimator 37 android:duration="200" 38 android:propertyName="scaleY" 39 android:valueFrom="5.0" 40 android:valueTo="0.1"/> 41 </set> 42</set>

現段階のfragment_main.xmlです。

java

1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:app="http://schemas.android.com/apk/res-auto" 5 xmlns:tools="http://schemas.android.com/tools" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent"> 8 9 <ImageView 10 android:id="@+id/img1" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 app:layout_constraintBottom_toBottomOf="parent" 14 app:layout_constraintEnd_toEndOf="parent" 15 app:layout_constraintStart_toStartOf="parent" 16 app:layout_constraintTop_toTopOf="parent" 17 app:srcCompat="@drawable/jiisan_l_mae" /> 18 19 <TextView 20 android:id="@+id/frma_tv1" 21 android:layout_width="wrap_content" 22 android:layout_height="wrap_content" 23 android:layout_marginStart="32dp" 24 android:layout_marginLeft="32dp" 25 android:layout_marginTop="32dp" 26 android:text="わしといっしょに、" 27 android:textSize="18sp" 28 app:layout_constraintStart_toStartOf="parent" 29 app:layout_constraintTop_toTopOf="parent" /> 30 31 <TextView 32 android:id="@+id/frma_tv5" 33 android:layout_width="wrap_content" 34 android:layout_height="wrap_content" 35 android:layout_marginStart="32dp" 36 android:layout_marginLeft="32dp" 37 android:text="そのごどうなったのか、きになっとる。" 38 android:textSize="18sp" 39 app:layout_constraintStart_toStartOf="parent" 40 app:layout_constraintTop_toBottomOf="@+id/frma_tv4" /> 41 42 <TextView 43 android:id="@+id/frma_tv4" 44 android:layout_width="wrap_content" 45 android:layout_height="wrap_content" 46 android:layout_marginStart="32dp" 47 android:layout_marginLeft="32dp" 48 android:text="むかし、けがをしたさるをたすけたが、" 49 android:textSize="18sp" 50 app:layout_constraintStart_toStartOf="parent" 51 app:layout_constraintTop_toBottomOf="@+id/frma_tv3" /> 52 53 <TextView 54 android:id="@+id/frma_tv3" 55 android:layout_width="wrap_content" 56 android:layout_height="wrap_content" 57 android:layout_marginStart="32dp" 58 android:layout_marginLeft="32dp" 59 android:text="ぼうけんをしてくれるかのう?" 60 android:textSize="18sp" 61 app:layout_constraintStart_toStartOf="parent" 62 app:layout_constraintTop_toBottomOf="@+id/frma_tv2" /> 63 64 <TextView 65 android:id="@+id/frma_tv2" 66 android:layout_width="wrap_content" 67 android:layout_height="wrap_content" 68 android:layout_marginStart="32dp" 69 android:layout_marginLeft="32dp" 70 android:text="いやいや、きみがわしになって、" 71 android:textSize="18sp" 72 app:layout_constraintStart_toStartOf="parent" 73 app:layout_constraintTop_toBottomOf="@+id/frma_tv1" /> 74 75</androidx.constraintlayout.widget.ConstraintLayout>

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

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

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

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

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

guest

回答2

0

ベストアンサー

~ thisがエラーになります。よく分からないので、 ~

そこで「よく分からない」とテキトウに弄っては、プログラミングとして間違っています。
「なぜ」エラーなのかを突き詰めて原因を特定したうえで、対策しなければなりません。
ですので、ご質問の際には単に「エラーです」では無く、 エラーとして表示されているメッセージを一緒にご提示頂けますよう お願いします。

AnimatorInflater.loadAnimator の第一パラメータは Context ですので、Activity 上では this が "Context を継承している" 自身を指しますのでエラーにはなりませんが、 Fragment 上では "Context を継承していない" 自身を指しますのでエラーになったものと思います。
ですので、 onCreateView にコードを移しても同じことです。

Fragment には getContext() もありますが、 onViewCreated() 内であれば requireContext() で良いように思います。( 試していませんがどちらを使っても onCreateView() 内では動作しないかもしれません。)


アニメーションテストに使用したコードです。(ほぼそのままですが^^; )

MainActivity.java

java

1package com.teratail.q370355; 2 3import androidx.appcompat.app.AppCompatActivity; 4 5import android.os.Bundle; 6 7public class MainActivity extends AppCompatActivity { 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 14 getSupportFragmentManager().beginTransaction() 15 .replace(R.id.fragment_container, new MainFragment()) 16 .commit(); 17 } 18}

レイアウト: activity_main.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:id="@+id/fragment_container" 8 tools:context=".MainActivity"> 9 10</androidx.constraintlayout.widget.ConstraintLayout>

MainFragment.java

java

1package com.teratail.q370355; 2 3import android.animation.AnimatorInflater; 4import android.animation.AnimatorSet; 5import android.os.Bundle; 6import android.view.*; 7import android.widget.TextView; 8 9import androidx.annotation.*; 10import androidx.fragment.app.Fragment; 11 12public class MainFragment extends Fragment { 13 private AnimatorSet animator1; 14 private TextView frma_tv1; 15 16 @Override 17 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 18 return inflater.inflate(R.layout.fragment_main, container, false); 19 } 20 21 @Override 22 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 23 super.onViewCreated(view, savedInstanceState); 24 25 //MainViewModel vm = new ViewModelProvider(requireActivity()).get(MainViewModel.class); 26 27 frma_tv1 = view.findViewById(R.id.frma_tv1); 28 29 animator1=(AnimatorSet)AnimatorInflater.loadAnimator(requireContext(),R.animator.animator1); 30 animator1.setTarget(frma_tv1); 31 animator1.start(); 32 } 33}

フラグメントのレイアウトやアニメーションリソースはご質問のそのままを使わせて頂きました。(ImageView は画像リソースがありませんので消しました。)

投稿2021/11/21 10:48

編集2021/11/23 02:23
jimbe

総合スコア12648

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

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

aruko

2021/11/21 11:24

厳しいご指摘、その通りだと思います。 努力していきたいと思います。 説明を読んでもなかなか理解できないところがあるため、申し訳ありません。 requireContext() も行全体がエラー(コード上で)になりました。 よろしくお願いします。
jimbe

2021/11/21 14:04

こちらでテキトウな Fragment に該当行を入れてみてもエラーにはなりません。(this を requireContext() にしています。) プロジェクトをクリーンしてリビルドしてみたりは如何でしょうか。
aruko

2021/11/22 00:40

プロジェクトを破棄して一からもう一度作ってみましたが、同様です。 MainAvtivity.javaの方にアニメーションを書くとエラーになりませんが、MainFragment.javaに書くとエラーになります。 requireContext()を使ってみました。
jimbe

2021/11/22 04:08 編集

再確認ですが、ご提示のコードの状態から、アニメータのロードの "this" を "requireContext()" にされているわけですね。 とすれば、少なくとも this の問題は解決しているようで、別の問題が発生しているように思います。 「android.content.res.Resources.NotFoundException」が表示されている状態のスクリーンショットをご質問に張って頂けますでしょうか。
aruko

2021/11/22 09:19

すみません。 あれこれさわっているうちに、アニメーションの3行をpublic View onCreateViewの方に移してしまっていました。 public void onViewCreatedの方に戻したら(thisはrequireContent()に変えて)エラーは解消されましたが、実行してもアニメーションが起こらないのです。 上の質問を編集(追加)しました。 もし見ていただけるならありがたいです。
jimbe

2021/11/22 09:57 編集

なるほど、 onCreateView で requireContent() していたので、コンパイルは通っても実行で例外になっていたのですね。 エラーの発生がどの段階なのか、** AndroidStudio のエディタ上で赤下線が引かれるエラーなのか、実行時に logcat に表示されるエラー(例外)なのかは区別して** 書いて頂けると助かります。(ずっと)AndroidStudio のエディタ上でのエラーかと思っていました。) onCreateView の段階ではまだリソースが取得できない状態なので、例外が発生していたのでしょう。 アニメーションの実行に関してですが、まず、現状のアクティビティに対するアクセスの仕方は普通ではありません。 アクティビティの View でアニメーションするのであれば、アクティビティで処理すべきと思います。 アニメーションのトリガがフラグメントの設定時しか無いのであれば、 onViewCreated で (MainActivity)requireActivity() によって MainActivity が取れますので、 MainActivity にアニメーションするためのメソッドを作っておいて、それを呼び出すようにしたほうが良いと思います。 例えば、MainActivity に public void startAnimationToFrmaTv1() { animator1.setTarget(frma_tv1); //animator1 は既に load 済みとして animator1.start(); } といったメソッドを作り、 MainFragment の onViewCreated では : ((MainActivity)requireActivity()).startAnimationToFrmaTv1(); : とするという具合です。 こうすれば animator1 や frma_tv1 を MainActivity で static 宣言する必要はありません。 また、アニメーションのトリガとして MainActivity で関与できるタイミング(例えば MainFragment を replaceFragment する前後等)があれば、そこで startAnimationToFrmaTv1() を呼ぶようにすれば、 MainFragment でアニメーションを気にする必要は無くなるでしょう。
jimbe

2021/11/22 10:12

すいません、ご質問を見直しました所・・・ ご質問の元のコードでは TextView frma_tv1 等が MainFragment 内で宣言されていましたが、追記されたほうでは MainActivity にあるとなっています。 追記のレイアウトには frma_tv1 等がありますがフラグメント用だそうで・・・どうなっているのでしょうか。
aruko

2021/11/22 10:55

MainActivityでもMainFragmentでもそれぞれ宣言してみましたが、どちらでもできるので、今後フラグメントを増やしていくことになるため、中心のMainActivityで宣言していくことにしました。追記の方が現在の状況です。 frma_tv1等は、MainFragment用ですが、今後作っていくfragmentでも使用できるかもしれないので、宣言はすべてMainActivityということにしました。
jimbe

2021/11/22 11:16

> それぞれ宣言してみましたが、どちらでもできるので、今後フラグメントを増やしていくことになるため、中心のMainActivityで宣言していく ~ その考え方は Fragment を使う意味で間違っていると思います。 Fragment の設計単位は、"特定の" Activity や Fragment の存在を前提とせずに、 View やそのデータ・データ構造及び操作メソッドを纏めた(古めの表現では"カプセル化"した)ものです。 View をその外部に保存することはカプセル化に反します。 また、 Android においては Activity や Fragment は生成・削除がアプリの都合に関係無く OS により行われることが前提ですので、 Fragment のレイアウトの View を Activity のフィールドに保存することは、Fragment が削除された際に不確定な設定を残したり、逆に Fragment 等の削除がうまくされずメモリに残り続ける"メモリリーク"となる可能性があります。
aruko

2021/11/23 00:09

いつも詳細な説明までしていただいてありがとうございます。 Fragmentについての理解を深めていかないと使えるようにならないようですが、少しでも覚えていきたいです。 ーーーーー public void startAnimationToFrmaTv1() { animator1.setTarget(frma_tv1); //animator1 は既に load 済みとして animator1.start(); } といったメソッドを作り、 MainFragment の onViewCreated では : ((MainActivity)requireActivity()).startAnimationToFrmaTv1(); : とするという具合です。 ーーーーー 行ってみました。 エラーなく実行できますが、アニメーションが起こりませんでした。 宣言はfrma_tv1もanimator1もMainActivityでしています。 アドバイスいただけたらありがたいです。
jimbe

2021/11/23 02:13 編集

もし MainFragment.java が追加でご提示されたそのままであれば、MainFragment で表示している R.layout.fragment_main すなわち fragment_main.xml の @+id/frma_tv1 の TextView の実体は、 MainActivity で宣言していると言われる変数 TextView frma_tv1 には設定されていません。 Activity でアニメーションさせていた時でも findViewById で対象となる View を変数に設定(代入)していたはずですが、 Fragment にする時に消されてしまったのではないでしょうか。
aruko

2021/11/23 12:05

コードまで書いてくださって本当にすみません。 上のコードのままで、無事アニメーションできました。 MainViewModel.javaを使わない方法だからできるのか、あるいは、activity_mainの、 android:id="@+id/fragment_container" tools:context=".MainActivity" があるからできるのでしょうか。 今後Fragmentを増やしていくためには、MainViewModel.javaを使っていきたいのですが。 よろしくお願いします。 ーーー Fragment にする時に消されてしまったのではないでしょうか。ーーー MainFragment.java上では、frma_tv1の宣言はできてもfindViewByIdのところで赤のなみなみ下線が出てエラーになってしまいます。 MainActivity.javaに移してみるとエラーになりません。
jimbe

2021/11/23 13:46 編集

アニメーションに関しましては、ViewModel も Activity も関係ありません。 ViewModel の行をコメントにしましたのは、単にこちらでテストする際に MainViewModel クラスを作らなかったからです ^^; 上のコメントに書きましたが、アニメーションのターゲットとして指定している frma_tv1 変数に値を設定していなかったためでしょう。 > findViewByIdのところで赤のなみなみ下線が出てエラー やはり、エラーが出たので他の方法を…とお考えになったのですね。 回答のコードの findViewById の個所を注意して御覧頂ければ、「view.findViewById」となっているのがお分かりかと思います。 Activity では単に「findViewById」としていたでしょう。 Fragment の onViewCreated で (onCreateView で生成したレイアウトの ) ビューを findViewById する場合は、 onViewCreated の第一引数として渡される View を用いて行う必要があります。
aruko

2021/11/24 11:51

view.findViewByIdがポイントでしたね。 現在、アニメーションを次々に設定してFragment画面を作っています。 今はまだ、Fragmentの良さや便利さが分かっていませんが、フラグメント上でアニメーションができるように教えていただいたので、このスレッドはここで閉じさせてもらいます。 ほんとにありがとうございました。
guest

0

他のソースファイルが分からないため動作の保証はできませんが、ひとまずこれをお試しください。
animator1= (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.animator1);

animator1= (AnimatorSet) AnimatorInflater.loadAnimator(getContext(), R.animator.animator1);

投稿2021/11/21 09:26

momodx

総合スコア185

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

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

aruko

2021/11/21 10:27

アドバイスありがとうございます。 getContent()とすると、行すべてがエラーになりました。 今のところ作ったファイルは、 MainActivity.java MainViewModel.java MainFragment.java activity_main.xml fragment_main.xml です。 よろしくお願いします。
momodx

2021/11/21 12:16

ということは、 ・res/animator/animator1.xml が足りていないと思います。 R.animator.animator1 → そんな変数ありません というエラーが出ていませんか?
momodx

2021/11/21 12:32

ひとまずこの内容で animator1.xml を作成してみて、エラーが消えたのであれば、それが原因です。 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> </set>
aruko

2021/11/21 13:32

ありがとうございます。やってみましたが、上のようにしても、エラーは消えないです。 android.content.res.Resources.NotFound Exception というエラーになっています。 見つからない、と言っています。
aruko

2021/11/21 13:36

引数のコンテキストのところをthisとしていた時は、thisの部分だけがエラーでしたが、getContext()やrequireContext()に変えると、android.content.res.Resources.NotFound Exception というエラーになります。
momodx

2021/11/22 04:34

当初の問題とは別の問題に移行してきているようですから、この質問はいったん解決したことにして、 (必要ならば)別の質問として立て直してはいかがでしょうか。 当初の問題は、「thisがエラーになります」でしたから、 言い換えるとすれば、「コンパイルエラーの解決方法を教えてください」だったと思います。 (少なくとも、私はそう捉えています) 一方、現在の状況はといえば、 ・当初の問題は解決(つまり、コンパイル自体は無事に通過)し、 ・別の問題が発生(実行時に Resources.NotFoundException が発生)する という事態になっているかと思います。 ここは、いったん仕切り直しをしてみてはいかがでしょううか。ご検討ください。 なお、新しい質問を立てるのであれば、私だったらこんな点に気をつけますかね・・・ ・前提・実現したいこと その質問でどこまで達成したいのかをはっきりさせる。 NotFoundException が解消できればそれでよし(後は自力でやりきる or 別質問にする)なのか、 きちっと動作させるところまでを知りたい(つまり、そもそものところ、移行方法が分からないから知りたい) なのかを、分かりやすく説明する。 後者であれば、動いたとき(Activityに記述していたとき)のソースコード一式と、修正したソースコードを載せた上で、 ・Activity の 〇〇 の処理を Fragment に移行したい ・どうにも成功しないので、(アドバイスが欲しい、サンプルコードが欲しい、いっそのこと修正して欲しい 等) ・現在は、試しに △△ してみたけれど、実行時に NotFoundException が発生してしまっている みたいな流れにする。 ※「修正して欲しい」は丸投げと同じなので、このサイトでは非推奨となっているはずです ・発生している問題・エラーメッセージ 一番先頭の android.content.res.Resources.NotFoundException: Can't load animation resource ID #0x???? みたいな部分から、一番最後の at javax.servlet.http.HttpServlet.service(HttpServlet.java:865) みたいな部分までを全部載せる
momodx

2021/11/22 04:47

他にも回答者さまがおられますから、状況をみて考えてみていただけばと思います。
aruko

2021/11/22 09:21

ご指導ありがとうございます。 読んでくださる側に立った書き方ができるよう努力していきます。 やりたいことは、Fragment上でアニメーションさせることです。 もしよろしければ、またよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問