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

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

ただいまの
回答率

90.02%

androidでのScrollViewの使い方について

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,490

ytzuka

score 12

前提・実現したいこと

androidアプリで縦にスクロールする機能をつけたいです。

res/layout/sample
この場所にxmlを作成しています。

発生している問題・エラーメッセージ

LenarLayoutとButtonは追加できるのですがSclollViewを追加するとエラーになってしまいました。

Error:(16, 31) No resource found that matches the given name (at 'text' with value '@string/click').

該当のソースコード

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/scroll"
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="@string/click"
                android:id="@+id/button"/>
        </LinearLayout>
    </ScrollView>
</RelativeLayout>


package net.yytto.scrolltest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.Toast;

//XMLによるレイアウト作成
public class ScrollTest extends Activity
    implements View.OnClickListener {
    private Button button;
    private LinearLayout linear;
    private ScrollView scroll;

    //アクティビティ起動時に呼ばれる
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        //レイアウトの指定
        setContentView(R.layout.sample);

        //コンポーネントの関連づけ
        scroll = (ScrollView)this.findViewById(R.id.scroll);
        linear = (LinearLayout)this.findViewById(R.id.linear);
        button = (Button)this.findViewById(R.id.button);
        button.setOnClickListener(this);
    }

    //ボタンクリック時に呼ばれる
    public void onClick(View view) {
        //ボタンを押したときの処理
        if (view == button) {
            toast("ボタンを押した");
        }
    }

    //トーストの表示
    private void toast(String text) {
        if (text == null) text = "";
        Toast.makeText(this, text, Toast.LENGTH_LONG).show();
    }
}

試したこと

元々書いてあるxmlns:androidを追加してみました

補足情報(言語/FW/ツール等のバージョンなど)

Android Plugin Version 2.1.2

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

0

xmlがぐちゃぐちゃになってるだけかな?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/scroll">
<!-- xmlns:android="http://schemas.android.com/apk/res/android"は、
     ルート要素(今回はRelativeLayout)にだけあればいいので消す -->
<!-- ScrollViewに子要素を持たせるため、"/>"で閉じずに終了タグを使う -->

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
<!-- LinearLayoutも一緒 -->

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="@string/click"
                android:id="@+id/button"/>
<!-- Buttonは子要素がないので、"/>"で閉じてOK、 -->
<!-- "<Button ・・・ ></button>"みたいに、終了タグ使っても大丈夫 -->

        </LinearLayout>
    </ScrollView>
<!-- 終了タグの順番に気をつける -->

</RelativeLayout>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/29 14:01

    ありがとうございます。しかし、別のエラーが残っているようです…

    キャンセル

  • 2016/06/29 14:17

    ~/res/values/strings.xml のファイルが存在するか、
    ファイルが存在する場合は、resourcesタグの子要素に、
    "<string name="click">適当な文言</string>"
    が記述されているか確認してください。

    それか、とりあえず動かすために
    android:text="適当な文言"
    のように、直接文字列指定してしまったほうが手っ取り早いと思います。

    この問題は、
    ScrollViewの問題とはまた別の問題になるので、
    質問内容は最初の物に戻しておいたほうがサイト的にいいと思います。

    キャンセル

  • 2016/06/29 14:25

    ありがとうございます。
    何人かに指摘され修正することができました。
    ありがとうございます。

    キャンセル

0

開発環境は Android Studio ですか?
メニューのFile → Invalidate Cache / Restart で治らないか一度試してみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/29 13:46

    やりましたが、治りませんでした。

    キャンセル

0

まず、レイアウトのタグ構造がおかしいです。
これはabs123さんの指摘で治っているようですね。

次のエラーは、resフォルダまたはassetフォルダ以下に誤りがある時に発生します。

エラーが変わった場合は質問を編集するか、別の質問として再投稿するべきだと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/29 14:14

    表現が間違っていたようです。申し訳ないです。
    values/strings.xmlのresourcesタグに追加できました。
    javaのソースコードでレイアウトの指定をする際、
    resフォルダをRとしているのですが、これは間違いですか?

    キャンセル

  • 2016/06/29 14:24

    xml上とJava上ではリソースにアクセスする指定方法が異なります。Java上でR.layout.sampleであっています。

    当初の質問は解決しているので、別の投稿にすべきです。

    キャンセル

  • 2016/06/29 14:26

    ありがとうございます。
    今後は、もう少し工夫して質問したいと思います。

    キャンセル

0

閉じてないタグがあったので直してみました。
エディタの下のTextで切り替えるとエラーがわかるので簡単に直せると思いますよ^^

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/scroll">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/click"
        android:id="@+id/button"/>
    </LinearLayout>
    </ScrollView>
</RelativeLayout>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/29 14:00

    ありがとうございます。エラーは減らすことができたのですが、他にも問題があるようなのでお願いします…

    キャンセル

  • 2016/06/29 14:10

    これは、res/values/strings.xmlにキーが無いと言ってるだけだと思いますが?
    エラーメッセージで検索してみましたか?

    キャンセル

  • 2016/06/29 14:19

    その部分は修正することができました。
    javaのソースコードでどのようにして、xmlリソースを使うのか
    まだよくわかっておらず、Button以外のものはうまくいっていないようです

    キャンセル

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

  • ただいまの回答率 90.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる