Java 安卓-聚焦时如何将EditText移到顶部?

Java 安卓-聚焦时如何将EditText移到顶部?,java,android,xml,android-layout,android-studio-2.2,Java,Android,Xml,Android Layout,Android Studio 2.2,我有一个视图,上面有一个ImageView,下面有一个EditText按钮。 当键盘出现时,如何将ImageView移出屏幕以允许显示编辑文本和按钮 这是my layout.xml文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.and

我有一个视图,上面有一个ImageView,下面有一个EditText按钮。 当键盘出现时,如何将ImageView移出屏幕以允许显示编辑文本和按钮

这是my layout.xml文件:

<?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:background="#fff"
    tools:context="com.archimedia.appToYours.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:ignore="UselessParent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:weightSum="1">


            <!-- this is what I want to shift up out of the screen -->
            <ImageView
                android:id="@+id/upToYoursImageView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:contentDescription=""
                app:srcCompat="@drawable/_title"/>

            <EditText
                android:id="@+id/code"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/targa"
                android:ems="15"
                android:fontFamily="sans-serif-condensed"
                android:hint="Some text..."
                android:inputType="textCapCharacters"
                android:maxLength="15"
                android:paddingLeft="60dp"
                android:textColor="#222"
                android:textColorHint="#222"
                android:textColorLink="@android:color/holo_blue_bright"
                android:textColorSecondary="#222"
                android:textCursorDrawable="@drawable/cursor"
                android:textSize="40sp"
                android:textStyle="bold"
                tools:ignore="HardcodedText,RtlHardcoded,RtlSymmetry" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="130dp"
                android:layout_marginBottom="50dp"
                android:layout_weight="0.50"
                tools:ignore="InefficientWeight">

                <Button
                    android:id="@+id/send_button"
                    style="@style/Widget.AppCompat.Button.Colored"
                    android:layout_width="170dp"
                    android:layout_height="170dp"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:background="@drawable/rounded_button"
                    android:foregroundGravity="center_vertical|center_horizontal"
                    android:text="Go!"
                   android:textAppearance="@style/TextAppearance.AppCompat.Display3"
                    android:textSize="38sp"
                    tools:ignore="HardcodedText" />
            </RelativeLayout>
          </LinearLayout>
       </LinearLayout>
    </RelativeLayout>

我想您可以添加一个滚动视图 试试这段代码,我希望它能有所帮助


我也有类似的要求。我解决问题的方法是在根视图上收听LayoutChanged事件。当我看到视图的高度变小时,我认为键盘打开了,并做出相应的反应。 下面是这种方法的一个示例。希望有帮助:

MainActivity.java

public class MainActivity extends AppCompatActivity {

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

    findViewById(R.id.activity_main).addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
        @Override
        public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
            if (bottom < oldBottom) {
                // View got smaller in height
                // In this case this means that the keyboard was opened
                findViewById(R.id.upToYoursImageView).setVisibility(View.GONE);
            } else {
                // View got larger in height
                findViewById(R.id.upToYoursImageView).setVisibility(View.VISIBLE);
            }
        }
    });
}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.activity_main).addOnLayoutChangeListener(新视图.OnLayoutChangeListener(){
@凌驾
public void onLayoutChange(视图v、int left、int top、int right、int bottom、int oldLeft、int oldTop、int oldRight、int oldBottom){
如果(底部<旧底部){
//视野高度变小了
//在本例中,这意味着键盘已打开
findViewById(R.id.upToYoursImageView).setVisibility(View.GONE);
}否则{
//视野高度变大了
findViewById(R.id.upToYoursImageView).setVisibility(View.VISIBLE);
}
}
});
}
}

AndroidManifest.xml

<activity android:name=".MainActivity"
        android:windowSoftInputMode="adjustResize"/>


layout\u width=“match\u parent”我很抱歉我弄错了。请尝试删除它并尝试一下。至少我尝试过使用它。当键盘触动时,它不会隐藏图像视图,但EditTextView不会出现,按钮仍然不会显示。您还可以将其添加到滚动视图中,并在打开键盘后滚动到底。->scroll.post(新Runnable(){@Override public void run(){scroll.fullScroll(View.FOCUS_DOWN);});