所以我试图在textview
上方放置一个编辑文字,但我却无法完成此操作。当我打开活动时,键盘打开,当我键入时,我看不到任何文本输入。此外,当键盘打开时,它会聚焦到我imageview
的中间位置,而不是我尝试放置编辑文本的位置。
这是我的xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_route_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.zach.BirdsboroClimbing.RouteDetails">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:text="Route Climbed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/routeCheckBox"
android:gravity="center" />
<CheckBox
android:text="Add Note"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/noteCheckBox"
android:gravity="center"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:text="Name"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/noteEditText"
android:layout_below="@id/routeCheckBox"
android:background="#008000"
/>
<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/routeDetailsView"
android:textSize="18sp"
android:textAlignment="center"
android:textColor="@android:color/black"
android:layout_below="@id/noteEditText"/>
<ImageView
android:layout_below="@id/routeDetailsView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/routeImage"
android:scaleType="fitCenter"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:adjustViewBounds="true" />
</RelativeLayout>
</ScrollView>
感谢您的帮助!
答案 0 :(得分:1)
在清单中使用softInputMode
和adjustPan
。这将使操作系统滚动整个屏幕所需的最小量,使光标在键盘上方可见。
<activity
android:name=".YourActivity"
android:windowSoftInputMode="adjustPan">
</activity>
编辑:我回答了这个问题。当你的布局出错时,你不能说它不起作用!!删除不必要的属性
你在imageView
中有 layout_alignParentBottom,layout_below,layout_alignParentStart 所有这些(使用你想要的不是全部的那个)
将此imageView
替换为
<ImageView
android:src="@drawable/yourImage"
android:layout_below="@id/routeDetailsView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/routeImage"
android:scaleType="fitCenter"
android:adjustViewBounds="true" />
答案 1 :(得分:1)
确定!我发现了这个问题。将drawable设置为imageview时会出现这种情况。
您已EditText
layout_centerVertical="true"
。
由于父级是RelativeLayout
,当图像视图中有可绘制时,EditText会重新计算其位置并进入父级的中心(垂直)。这实际上是ImageView的背后。因此,您的EditText落后于ImageView,并且由于ImageView是在xml
中的EditText之后编写的,因此它与EditText重叠。
解决方案是从EditText中删除android:layout_centerVertical="true"
。
答案 2 :(得分:1)
用下面的
替换你的xml<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/activity_route_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<CheckBox
android:text="Route Climbed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/routeCheckBox"
android:gravity="center" />
<CheckBox
android:text="Add Note"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/noteCheckBox"
android:gravity="center"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:text="Name"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/noteEditText"
android:layout_below="@id/routeCheckBox"
android:background="#008000"
/>
<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/routeDetailsView"
android:textSize="18sp"
android:textAlignment="center"
android:textColor="@android:color/black"
android:layout_below="@id/noteEditText"/>
<ImageView
android:layout_below="@id/routeDetailsView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/routeImage"
android:scaleType="fitCenter"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:adjustViewBounds="true" />
</RelativeLayout>
</LinearLayout>
</ScrollView>
并在Activity oncreate方法中添加以下行
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
答案 3 :(得分:0)
仅删除EditText的填充(如果存在)。它对我有用。