Я разрабатываю приложение, в котором фоновое изображение сделать сокращения на всплывающем клавиатуры. Мой .XML имеет следующий вид :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background" >
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
/**
Other stuff
*/
</RelativeLayout>
</ScrollView>
</RelativeLayout>
Я искал в Google и нашел, что добавить
android:windowSoftInputMode="stateVisible|adjustPan"
в мой файл манифеста. Но его не использовать.
Редактировать :
Мой макет перед ключевая доска выскочить выглядит так :
И после того как выскочит как:
Пожалуйста, проверьте разница в фоновое изображение. В Изображение 1 изображение в размер и на рис. 2 фоновое изображение термоусадочная-Эд. Мне нужен футер и фон сделать сдвиг вверх на клавиатуре всплывающее окно.
Что я пропускаю или делаю неправильно, пожалуйста, предложите мне.
Просто использовать в методе onCreate()` этот код:
protected void onCreate(Bundle savedInstanceState) {
...
getWindow().setBackgroundDrawableResource(R.drawable.your_image_resource);
...
}
и исключить эту строку в XML:
android:background="@drawable/background"
Подробнее на:
Я сталкивался когда-то подобный вопрос, моя была решена с помощью указанных ниже свойств в манифесте использовать его там, где ваша деятельность была объявлена.
android:windowSoftInputMode="stateHidden|adjustResize|adjustPan"
Ок, если я правильно понял ваш вопрос правильно, вы хотите, чтобы макет с фоном и представление ScrollView. И когда softkeyboard всплывает, вы хотите изменить представление ScrollView, но сохранить фон в полном размере в порядке? если это's то, что вы хотите, чем я, возможно, нашли решение этой проблемы:
Что вы можете сделать 2 деятельности.
Мероприятие 1:
public class StartActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent StartApp = new Intent(this, DialogActivity.class);
startActivity(StartApp); // Launch your official (dialog) Activity
setContentView(R.layout.start); // your layout with only the background
}
}
Действие activity2:
public class DialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); // get rid of dimming
this.requestWindowFeature(Window.FEATURE_NO_TITLE); //get rid of title bar (if you want)
setContentView(R.layout.dialog); //Dialog Layout with scrollview and stuff
Drawable d = new ColorDrawable(Color.BLACK); //make dialog transparent
d.setAlpha(0);
getWindow().setBackgroundDrawable(d);
}
}
макет начального экрана:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/test"> //your background
</LinearLayout>
макет диалогового окна:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- All your Scrollview Items -->
</LinearLayout>
</ScrollView>
</RelativeLayout>
AndroidManifest.xml
деятельность "старт":
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
диалог активность
android:theme="@android:style/Theme.Dialog"
android:windowSoftInputMode="adjustResize"
android:excludeFromRecents="true"
Редактировать: Для завершения мероприятий одновременно использовать следующие где-то внутри вашего DialogActivity (пример: переопределить назадВ):
@Override
public void onBackPressed() {
Intent intent = new Intent(getApplicationContext(), StartActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
}
а в методе onCreate () из StartActivity:
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
else {
Intent StartApp = new Intent(this, TestActivity.class);
startActivity(StartApp);
}
Скриншоты!
Нормальный
Щелкнул поле полей EditText
После того, как прокрутил (PS: я поставил текстовое поле внутри представление ScrollView thats, почему его нет ;) )
Я надеюсь, что это поможет вашему выходит ;)
У меня был тот же вопрос.
Добавьте свой внешний макет фона внутри метода onCreate как показано ниже
getWindow().setBackgroundDrawableResource(R.drawable.login_bg);
и добавить ваш внешний макет, как
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#4d000000"
><other code></ScrollView></RelativeLayout>
Добавить в Android:layout_weight="и 1"` В для наружной разметки и Дон'т установить фон в XML-файл Я думаю, что это помогает кто-то
Эй можете ли вы пожалуйста, попробуйте добавить это
android:isScrollContainer="false"
в представление ScrollView. Она решила раз моя проблема. Тоже может помочь U.
Кроме того, добавьте это к вашей деятельности в manifest.xml
android:windowSoftInputMode="adjustPan"
Надеюсь, что это помогает..!! :)
Вы должны двигаться андроид:фон=то"@холст/фон"
в в книги
выше представление ScrollView
. Когда клавиатура всплывает это эффективно делает экран меньше, и изображение в качестве фона у вас нет контроля над тем, как он изменяется/обрезанные.
Поэтому, если вы хотите, чтобы изображение в полную ширину, но сохранить соотношение ascpect попробуйте это:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/background"
android:scaleType="centerCrop" />
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
/**
Other stuff
*/
</RelativeLayout>
</ScrollView>
</RelativeLayout>
Вы можете попробовать разные системы Android:scaleType значения` для того чтобы достигнуть желаемого эффекта. Если вы хотите, чтобы картинка была обрезана сверху, а не по умолчанию средний урожай, смотрите здесь о том, как добиться этого, или попробуйте использовать это библиотека
Проверьте этот ответ, основной фокус-это вам не'т установить фон для макета, но к окну. Это может быть сделано от деятельности с `getWindow().setBackgroundDrawable (), или вы можете установить его в теме с вашей деятельностью.
Вместо андроид:windowSoftInputMode="и что quot stateVisible|adjustPan&;, вы должны изменить для Андроид:windowSoftInputMode="и stateVisible|adjustResize"
в. Он работал для меня.
Использовать функцией ScrollView как родительской. Она будет прокручиваться вверх и вниз автоматически при открытии и закрытии клавиатуры.
Почему Дон'т Вы делаете, как это
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:focusable="true"
android:background="@drawable/background"
android:focusableInTouchMode="true">
<RelativeLayout
android:id="@+id/relative"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
/**
Other stuff
*/
>
</RelativeLayout>
</ScrollView>
Вы должны использовать опцию adjustResize
для windowSoftInputMode
установка по активность
в файл AndroidManifest.xml
.
я использую ниже вид родителя и его работает нормально для меня:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:id="@+id/rfqItemsParentScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >