2016-03-31 26 views
1

Bunun için yazılım tuşu açıldığında etkinlik sayfasının kaydırılacağını istiyorum.kaydırma etkinliği sayfası android

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

     Display display = getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     int height = size.y; 

     int x=getActionBarHeight();//in this line I get the actionBar height programicaly the function is in the end of page 


     RelativeLayout l= (RelativeLayout)findViewById(R.id.LayoutBackground); 
     l.getLayoutParams().height = (height-x);//the layout size = size of full screen - size of actionBar 




    } 

    //I saw this function in stackOverflow site. function to get the actionBar height 
    public int getActionBarHeight() { 

      TypedValue tv = new TypedValue(); 
      getApplicationContext().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true); 
      int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId); 
      return actionBarHeight; 
     } 

tezahür:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.trying" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="16" 
     android:targetSdkVersion="21" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:windowSoftInputMode="stateHidden" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

IDIA olmasıdır

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    tools:context="com.example.trying.MainActivity" 
    > 


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

     <RelativeLayout 
      android:id="@+id/LayoutBackground" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:background="@drawable/background" 
      > 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/hello_world" > 

       <requestFocus /> 
      </EditText> 
     </RelativeLayout> 
    </ScrollView> 

</RelativeLayout> 

ve

kodunda realativeLayout yüksekliği değişti, ben xml kaydırma Görünüm eklenen Bunu yapmak için layout heigt, ekran boyutuna (tüm cihazlar) ve eylem çubuğuna da bağlıdır.

Sorunum, uygulamayı çalıştırdığımda arka planın küçük olmasıdır. Bunu mizanpajınızda scrollview eklemek gerekmez özellikle aktivite

android:windowSoftInputMode="adjustResize" 

cevap

0

bu. Xml'den kaldır. Sonra AndroidManifest.xml, etkinlik aşağıdaki satırları ekleyin:

<activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
      android:configChanges="keyboardHidden" 
     android:windowSoftInputMode="adjustPan|stateAlwaysHidden" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
+0

o çoğaltmak değil @RohitArya ... Aynı sorun benim projede de oldu, ben de senin gibi çözümü kullanın ama başarıyı alamadım. ama sadece adjustResize kullanarak problemim çözüldü. <: Name = "activity.CreateAddSubjectActivity." android: label = "@ string/title_activity_create_add_subject" android: windowSoftInputMode = "adjustResize" etkinliği android> –

+0

@RohitArya seni ... gösterebilir Sevgili ve benim cevabım arasında bir çok fark var ... bilmelisin. –

+0

@RohitArya .. –

0

için beyannamesine aşağıdaki kod satırını ekleyin, işlem çubuğu boyutu iki kez düştü gibi görünüyor

+0

üzgünüm, işe yaramazsa :( – Toda

+0

Lütfen sayfa, klavye klavyenin arkasında olacak şekilde edittext'e odaklanmak için sadece yukarı kaydırılacağını unutmayın. asla yukarı çıkmayacaktır –

+0

Alanı en alta yerleştirmeye çalışın ve sonra çalışıp çalışmadığını kontrol edin. –