2017-06-07 3 views
0

私は画像、テキストビュー、エディットボックス、ボタンがあるので、キーボードが開くたびに画面をボタンまでスクロールして、送信ボタンを押してください。私はscrollviewを使用してこれを行いましたが、私はスクロールビューを削除していくつかの変更を加えましたが、今度は再びスクロールビューを使用すると機能しません。 こちらのコードはご確認ください。scrolltviewを使用してedittextキーボードの後ろにボタンを表示する

layout_file:

<?xml version="1.0" encoding="utf-8"?> 

<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:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="16dp" 
android:paddingLeft="16dp" 
android:paddingRight="16dp" 
android:paddingTop="16dp" 
tools:context="myapp.anis.hotel.MainActivity" 
android:background="@drawable/backgroundhotel" 
android:fitsSystemWindows="true"> 

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

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<TextView 
    android:text="Please share your feedback" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView6" 
    android:textAppearance="@style/TextAppearance.AppCompat.Large" 
    android:textColor="@android:color/background_dark" 
    android:fontFamily="serif" 
    android:layout_below="@+id/imageView" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="15dp" /> 

<TextView 
    android:text="@string/textview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/thanks" 
    android:shadowColor="@android:color/background_light" 
    android:textAppearance="@style/TextAppearance.AppCompat.Large" 
    android:textColorHighlight="@android:color/background_dark" 
    android:textColor="@android:color/background_dark" 
    android:fontFamily="serif" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="15dp" /> 

<ImageView 
    android:layout_width="wrap_content" 
    app:srcCompat="@drawable/hotellogo" 
    android:id="@+id/imageView" 

    android:layout_height="150dp" 
    android:layout_marginTop="15dp" 
    android:layout_below="@+id/thanks" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="match_parent" 
    android:ems="10" 
    android:maxLines="50" 
    android:background="@android:drawable/editbox_background" 
    android:layout_marginTop="15dp" 
    android:id="@+id/feedback" 
    android:hint="Enter FeedBack" 
    android:inputType="textMultiLine" 
    android:gravity="left" 
    android:textColorHint="@android:color/background_dark" 
    android:textColor="@android:color/background_dark" 
    android:textColorHighlight="@android:color/background_dark" 
    android:layout_below="@+id/textView6" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_height="180dp" /> 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:srcCompat="@drawable/submitting1" 
     android:background="@android:color/transparent" 
     android:onClick="onSubmit" 
     android:id="@+id/submit" 
     android:layout_below="@id/feedback" 
     android:layout_alignParentBottom="true" 
     android:layout_marginTop="20dp" 
     android:layout_centerHorizontal="true" 
     /> 
</RelativeLayout> 
</ScrollView> 
    </RelativeLayout> 

と私のメインの活動で、私は私のイメージボタンに移動するにはscrolltoメソッドを使用しています。

public class MainActivity extends AppCompatActivity { 


ImageButton submit; 
EditText feedBack; 
static public String saveFeedBack=""; 
ScrollView view; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    submit = (ImageButton) findViewById(R.id.submit); 
    feedBack = (EditText) findViewById(R.id.feedback); 
    view = (ScrollView) findViewById(R.id.scroll); 
    view.scrollTo(submit.getScrollX(),submit.getScrollY()); 
    } 

public void onSubmit(View view){ 

    saveFeedBack = feedBack.getText().toString(); 
    if(saveFeedBack.length() >=4) { 
     Intent intent = new Intent(this, Main3Activity.class); 
     startActivity(intent); 
    } 
    else{ 
     Toast.makeText(getApplicationContext(),"Enter valid Feedback please.",Toast.LENGTH_SHORT).show(); 
    } 
} 

@Override 
protected void onRestart() { 
    super.onRestart(); 
    feedBack.setText(""); 
    feedBack.setHint("Enter Feedback"); 
} 

}

が、私は私のエディットテキストではなく、私のボタンにscrollviewにスクロール自分のアプリケーションを実行したとき。私はadjustResize、adjustPanとそれらのすべてのものを試しましたが、それらのどれも働いていませんでした。

答えて

0

大変多くの研究の後、私はあなたの問題を解決しました。実際には、スクロールを使用してonCreate内の任意の位置にスクロールすると、ビューを膨張させるために少しの遅延が必要となるため、動作しません。

だからあなたのonCreate内の以下のコードを使用します。

view.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       view.fullScroll(ScrollView.FOCUS_DOWN); 
      } 
     },200); 

はそれが役に立てば幸い!

+0

私はこれを試しましたが、それでも同じ結果が出ませんでした。編集テキストをクリックすると、キーボードが表示され、スクロール・ビューが編集テキストにスクロールし、キーボードの後ろにボタンが表示されます。 – user2307659

+0

余白の代わりにpaddingBottomを与え、同じ方法で問題を解決したためにパディングを増やしてみてください – sumit

+0

私はそれをやろうとしていますが、スクロールビューは編集テキストだけにスクロールし、 – user2307659

関連する問題