2017-05-07 1 views
0

Ich kann erfolgreich eine Textansicht zu einer Bildlaufansicht auf einen Klick hinzufügen, wie in den zwei Screenshots gezeigt: screenshot 1 und screenshot 2. Aber was, wenn ich stattdessen die Textansichten zuerst am unteren Rand des Bildschirms hinzufügen möchte und jede hinzugefügte Textansicht die vorherige über sie schiebt, was dann dazu führen würde, dass ich nach oben scrollen anstatt nach unten, um frühere Textansichten zu sehen? Ich habe das schon lange versucht und kann es nicht zur Arbeit bringen. Irgendwelche Vorschläge? Ich versuchte einfach, um die lineare Layout Layout-Schwerkraft zu ändern, die der Scroll-Teil arbeitet, bis in kommt.Versuch zum Hinzufügen von Textansicht auf Schaltfläche klicken mit scrollview

<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; 
} 

Antwort

0

Nach dem neuen Textview hinzufügen, können Sie scrollView.fullScroll (ScrollView.FOCUS_DOWN) nennen;

In der XML-Layout-Code:

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

In Ihrem Aktivitätscode:

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); 
     } 
    }; 
} 

Quelle: How to scroll to bottom in a ScrollView on activity startup

Tipp: Statt Textviews in eine Scroll hinzuzufügen, können Sie Verwenden Sie einen ListView oder einen RecyclerView.

1

Versuchen RelativeLayout als Stamm Layout.

Try this:

<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

danke für die Antwort, aber das relative Layout behebt das Problem nicht. – 4rsenal

+0

können Sie bitte Ihre Aktivitätsklassencodes posten? – FAT

+0

wurde gerade der Aktivitätscode – 4rsenal

Verwandte Themen