我使用主题
<style name="Theme.TransparencyDemo" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
布局上有一些形式。表单有一些EditTexts。如果editText有焦点打开键盘。我想在键盘上面我的editText,但它不起作用。我的所有布局都在上升。这是错的。我的朋友:
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_purple"
android:orientation="vertical"
android:weightSum="1">
<RelativeLayout
android:id="@+id/relativeLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="38.50dp"
android:orientation="horizontal"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true">
<ImageView
android:id="@+id/imageMenu"
android:layout_width="43dp"
android:layout_height="43dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="14.50dp"
android:layout_weight="1"
android:src="@drawable/back_login"
/>
<com.skip.client.customer.utils.MyTextView2D
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Back"
android:id="@+id/textView44"
android:layout_centerVertical="true"
android:layout_toEndOf="@+id/imageMenu"
android:layout_marginLeft="7dp"
android:textColor="#ffffff"
android:textSize="16.8dp"
android:textStyle="bold"
android:layout_marginTop="11dp"
style="@style/CustomTextViewStyle"/>
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:orientation="vertical"
android:layout_above="@+id/linearLayout16"
android:layout_centerHorizontal="true">
<com.skip.client.customer.utils.MyTextView2D
android:id="@+id/textView17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="4"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffff"
android:textSize="24dp"
android:textStyle="bold"
android:layout_alignBottom="@+id/progressBar"
android:layout_centerHorizontal="true"
android:text="Almost there!"
style="@style/CustomTextViewStyle"/>
<RelativeLayout
android:layout_width="116dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<com.pkmmte.view.CircularImageView
android:id="@+id/receiptImageView"
android:layout_width="116dp"
android:layout_height="116dp"
android:layout_alignParentBottom="false"
android:layout_alignParentEnd="false"
android:layout_alignParentLeft="false"
android:layout_alignParentRight="false"
android:layout_alignParentStart="false"
android:layout_alignParentTop="false"
android:layout_alignWithParentIfMissing="false"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25dp"
android:src="@drawable/profile_photo"
app:border="true"
app:border_width="4dp"
app:border_color="#ffffff"/>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:indeterminate="false"
android:visibility="gone"/>
<ImageView
android:layout_width="33dp"
android:layout_height="33dp"
android:id="@+id/imageView2"
android:background="@drawable/avatar_plus"
android:layout_alignTop="@+id/progressBar"
android:layout_alignParentEnd="true"
android:layout_marginTop="32dp"/>
</RelativeLayout>
</LinearLayout>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollView"
android:layout_below="@+id/linearLayout16"
android:layout_alignParentStart="true">
</ScrollView>
<LinearLayout
android:id="@+id/applyButton"
android:layout_width="match_parent"
android:layout_height="67dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="false"
android:layout_alignParentStart="false"
android:layout_alignParentTop="false"
android:background="#007bb6"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical">
<com.skip.client.customer.utils.MyTextView2D
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Continue"
android:textColor="#ffffff"
android:textSize="17.76dp"
android:textStyle="bold"
style="@style/CustomTextViewStyle"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_above="@+id/applyButton"
android:layout_alignParentStart="true"
android:id="@+id/linearLayout16">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:orientation="vertical">
<EditText
android:id="@+id/editEmail"
android:layout_width="match_parent"
android:layout_height="50dp"
android:autoText="false"
android:background="#00000000"
android:ems="10"
android:hint="Your email"
android:inputType="textEmailAddress"
android:nextFocusDown="@+id/editPassword"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:singleLine="false"
android:textColor="#ffffff"
android:textColorHint="#9377ab"
android:textSize="19sp"
android:textStyle="bold"
android:gravity="center_vertical|center_horizontal"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="16dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingBottom="8.50dp">
<EditText
android:id="@+id/editFirstName"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1.09"
android:background="#00000000"
android:ems="10"
android:hint="Your first name"
android:inputType="text"
android:maxLength="254"
android:singleLine="true"
android:nextFocusDown="@+id/editLastName"
android:textColor="#ffffff"
android:textColorHint="#9377ab"
android:textSize="19sp"
android:textStyle="bold"
android:gravity="center_vertical|center_horizontal"
android:layout_marginRight="3dp"/>
<View
android:layout_width="1dp"
android:layout_height="20dp"
android:background="#ffffff" />
<EditText
android:id="@+id/editLastName"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:background="#00000000"
android:ems="10"
android:hint="Your last name"
android:imeOptions="actionDone"
android:inputType="text"
android:maxLength="254"
android:singleLine="true"
android:nextFocusDown="@+id/editPhone"
android:textColor="#ffffff"
android:textColorHint="#9377ab"
android:textSize="19sp"
android:textStyle="bold"
android:gravity="center_vertical|center_horizontal"
android:layout_marginRight="3dp"/>
</LinearLayout>
<EditText
android:id="@+id/editPhone"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#00000000"
android:ems="10"
android:hint="Your Phone number"
android:inputType="text|phone"
android:nextFocusDown="@+id/editFirstName"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:textColor="#ffffff"
android:textColorHint="#9377ab"
android:textSize="19sp"
android:textStyle="bold"
android:gravity="center_vertical|center_horizontal"
android:layout_marginTop="12dp"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_marginTop="2dp">
<LinearLayout
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@drawable/line_white"
android:orientation="horizontal"
android:paddingBottom="17.25dp"
android:paddingTop="19.75dp"
android:layout_marginLeft="3dp">
<com.skip.client.customer.customviews.SkipTextView
android:id="@+id/tvDob"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dp"
android:background="#00000000"
android:ems="10"
android:hint="Age"
android:inputType="number"
android:paddingLeft="2dp"
android:textColor="#ffffff"
android:textColorHint="#9377ab"
android:textSize="19sp"
android:textStyle="bold"
android:gravity="center_horizontal"/>
</LinearLayout>
<RadioGroup
android:id="@+id/radioSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14.50dp"
android:layout_marginTop="1.75dp"
android:gravity="right"
android:orientation="horizontal"
android:layout_gravity="bottom">
<RadioButton
android:id="@+id/radioMale"
android:layout_width="93dp"
android:layout_height="41dp"
android:background="@drawable/radio_button_background_reg"
android:button="@android:color/transparent"
android:checked="true"
android:gravity="center_vertical|center_horizontal"
android:text="Male"
android:textColor="#ffffff"
android:textSize="19sp"
android:textStyle="bold"
android:textColorHint="#9377ab"
android:layout_marginLeft="5dp"
android:autoText="false"/>
<RadioButton
android:id="@+id/radioFemale"
android:layout_width="93dp"
android:layout_height="41dp"
android:layout_marginLeft="5dp"
android:background="@drawable/radio_button_background_reg"
android:button="@android:color/transparent"
android:checked="false"
android:gravity="center_vertical|center_horizontal"
android:singleLine="true"
android:text="Female"
android:textColor="#ffffff"
android:textSize="19sp"
android:textStyle="bold"
android:textColorHint="#9377ab"
android:autoText="false"/>
</RadioGroup>
</LinearLayout>
<EditText
android:id="@+id/do_not_remove"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center_vertical"
android:layout_marginBottom="50dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:layout_marginTop="5dp"
android:background="@drawable/line_white"
android:ems="10"
android:inputType="textPersonName"
android:paddingBottom="19.50dp"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:textColor="#ffffff"
android:textColorHint="#ffffff"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
在我写的表现中:
<activity
android:name=".activities.StartActivity"
android:theme="@style/Theme.TransparencyDemo"
android:configChanges="orientation|screenSize"
android:screenOrientation="portrait"/>
我想滚动scrollView并在键盘上方引发EditText
不仅仅是一个例子
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1"
android:background="#376e0a">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_gravity="center_horizontal"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="62dp"
android:background="#420603"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
答案 0 :(得分:0)
添加以下
android:windowSoftInputMode="stateVisible|adjustResize"
在你的清单文件中。
答案 1 :(得分:0)
Adjust layout when soft keyboard is on
这是一个像Evernote登录界面一样的解决方案:
首先,定义一个类似于你的特殊LinearLayout的类:
public class MyLayout extends LinearLayout {
public MyLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyLayout(Context context) {
super(context);
}
private OnSoftKeyboardListener onSoftKeyboardListener;
@Override
protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
if (onSoftKeyboardListener != null) {
final int newSpec = MeasureSpec.getSize(heightMeasureSpec);
final int oldSpec = getMeasuredHeight();
if (oldSpec > newSpec){
onSoftKeyboardListener.onShown();
} else {
onSoftKeyboardListener.onHidden();
}
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
public final void setOnSoftKeyboardListener(final OnSoftKeyboardListener listener) {
this.onSoftKeyboardListener = listener;
}
public interface OnSoftKeyboardListener {
public void onShown();
public void onHidden();
}
}
此布局侦听测量更改,并且如果新测量结果为&lt;比旧的,这意味着屏幕的一部分被软键盘吃掉。
虽然,为了它的工作,在你的清单中你需要设置android:windowSoftInputMode =&#34; adjustResize&#34;所以内容将被调整大小而不仅仅是转移。
整个系统的工作原理如下:你有你的布局:
<MyLayout id="layout">
<SomeImage id="image"/>
<SomeText>
<SomeInput>
</MyLayout>
就像evernotes登录屏幕一样。然后,在你的活动中:
((MyLayout)findViewById(R.id.layout)).setOnSoftKeyboardListener(new OnSoftKeyboardListener() {
@Override
public void onShown() {
findViewById(R.id.image).setVisibility(View.GONE);
}
@Override
public void onHidden() {
findViewById(R.id.image).setVisibility(View.VISIBLE);
}
});
然后转到manifest.xml并设置
android:windowSoftInputMode="adjustResize"
将会发生什么,当显示软键盘时,它会隐藏图像并调整其余内容的大小。 (您实际上可以看到如何在Evernote中调整文本大小)
图像隐藏当然是您可以做的许多事情之一。但是你必须要小心,因为不同的布局变化也会调用onMeasure。
当然,这是一个肮脏的变种。您需要检查方向变化,以及实际进行测量时的正确时间,以及在将新规格与旧规格进行比较时可能需要更多逻辑。但我认为这是唯一的方法。