2017-05-07 15 views
0

screenshot 1screenshot 2という2つのスクリーンショットのように、ボタンクリックのスクロールビューにテキストビューを正常に追加できます。しかし、代わりに、テキストビューを最初に画面の下部に追加し、それぞれのテキストビューを追加すると上のものが上に表示されるため、過去のテキストビューを表示するために上にスクロールされます。私はかなりの時間これを達成しようとしており、それを働かせることはできません。助言がありますか?私は単純にスクロール部が入るまで働くリニアレイアウトレイアウト重力を変更しようとしました。ボタンをクリックしたときにスクロールビューを追加しようとしました

<ScrollView 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:layout_marginRight="8dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginLeft="8dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginBottom="8dp" 
    app:layout_constraintTop_toTopOf="parent" 
    android:layout_marginTop="8dp" 
    app:layout_constraintBottom_toTopOf="@+id/editText"> 
    <LinearLayout 
     android:id="@+id/layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:orientation="vertical" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent"> 
    </LinearLayout> 
</ScrollView> 
<EditText 
    android:id="@+id/editText" 
    android:layout_width="250dp" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="4dp" 
    android:layout_marginEnd="8dp" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginStart="8dp" 
    android:ems="10" 
    android:inputType="textPersonName" 
    android:hint="Enter Text" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.508" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toLeftOf="@+id/button" /> 
<Button 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Create" 
    app:layout_constraintBottom_toBottomOf="parent" 
    android:layout_marginBottom="1dp" 
    android:layout_marginRight="8dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginEnd="8dp" /> 


private LinearLayout layout; 
private EditText editText; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    layout = (LinearLayout) findViewById(R.id.layout); 
    editText = (EditText) findViewById(R.id.editText); 
    Button button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(onClick()); 
} 
private View.OnClickListener onClick() { 
    return new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      layout.addView(createNewTextView(editText.getText().toString()),0); 
     } 
    }; 
} 
private TextView createNewTextView(String text) { 
    final LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams 
      (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    final TextView textView = new TextView(this); 
    lparams.gravity = Gravity.BOTTOM; 
    textView.setLayoutParams(lparams); 
    textView.setText("New text: " + text); 
    textView.setTextSize(30);; 
    return textView; 
} 

答えて

0

を新しいのTextViewを追加した後、あなたはscrollView.fullScroll(ScrollView.FOCUS_DOWN)を呼び出すことができます。あなたのアクティビティコードで

<ScrollView 
    android:id="@+id/scrollview" 
    <!-- this adds an id for your scrollview --> 
    <!-- rest of your XML layout below --> 

private ScrollView scrollView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // Add the scrollView reference 
    this.scrollView = (ScrollView) findViewById(R.id.scrollview); 
    ...rest of onCreate 

private View.OnClickListener onClick() { 
    return new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      layout.addView(createNewTextView(editText.getText().toString()),0); 
      // Scroll the scrollView to the bottom 
      scrollView.fullScroll(ScrollView.FOCUS_DOWN); 
     } 
    }; 
} 

出典:How to scroll to bottom in a ScrollView on activity startup

ヒント:代わりにScrollViewにTextViewsを追加する、次のことができ、あなたのXMLのレイアウトコードで

ListViewまたはRecyclerViewを使用します。

1

ルートレイアウトとしてRelativeLayoutを使用してみてください。

これを試してみてください:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/background"> 

    <LinearLayout 
     android:id="@+id/bottom_layout" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_weight="4"> 
     <EditText 
      android:id="@+id/edit" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1"/> 
     <Button 
      android:id="@+id/butt" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="GO" 
      android:layout_weight="4"/> 
    </LinearLayout> 

    <ScrollView 
     android:id="@+id/scroll" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@id/bottom_layout"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:id="@+id/viewLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom"> 


     </LinearLayout> 
    </ScrollView> 

</RelativeLayout> 
+0

レスポンスはありがたいですが、相対レイアウトで問題が解決されるわけではありません。 – 4rsenal

+0

アクティビティのクラスコードを投稿してください。 – FAT

+0

にアクティビティコード – 4rsenal

関連する問題