voglio fare un app con un attività di accesso/layout simile a quello che Facebook app ha. Ciò che intendo è quando il campo di testo è focalizzato sulla tastiera virtuale, spinge l'intera vista verso l'alto ma non schiaccia un logo. Ho provato android:windowSoftInputMode="adjustPan/adjustResize"
ma non è quello che stavo cercando di raggiungere.Creazione di layout di login come in facebook app per Android
Ho trovato la domanda this su SO forse renderà le cose più chiare, ma non ha soluzione al problema.
Ho anche provato vari tipi di layout, ma la tastiera morbida spinge solo il concentrato < EditText> up. Per favore guidami.
UPDATE:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#DDDDDD">
<RelativeLayout
android:height="0dp"
android:layout_weight="1"
android:layout_height="0dp"
android:layout_width="fill_parent"
android:background="#ff0000">
<ImageView
android:layout_centerVertical="true"
android:layout_height="fill_parent"
android:layout_width="fill_parent"></ImageView>
</RelativeLayout>
<RelativeLayout
android:height="0dp"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_width="fill_parent"
android:background="#00ff00">
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#0000ff"
android:height="0dp" >
<Button
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Log in"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="4dp"
android:hint="password"
android:inputType="textPassword" >
</EditText>
<EditText
android:id="@+id/editText1"
android:hint="login"
android:padding="4dp"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" ></EditText>
</RelativeLayout>
</LinearLayout>
UPDATE soluzione di lavoro non posso incollo qui l'intero file XML, ma la struttura dovrebbe essere sufficiente . Basato sulla risposta di Gabe Sechan.
Layout{
Layout top weight 1
Layout mid weight 1
Layout bot weight 1
}
layout del bambino hanno impostato:
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" // should be changed accordingly to your layout design.
Ed ecco un codice Java per l'attività (tastiera/down up):
View top, mid, bot;
final View activityRootView = findViewById(R.id.loginLayout);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView()
.getHeight() - activityRootView.getHeight();
if (heightDiff > 100) { //keyboard up
mid.setVisibility(View.INVISIBLE);
top.setLayoutParams(new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, 0, 0f));
bot.setLayoutParams(new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, 0, 1f));
} else {// keyboard down
// v.setVisibility(View.VISIBLE);
mid.setVisibility(View.VISIBLE);
top.setLayoutParams(new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, 0, 2f));
bot.setLayoutParams(new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, 0, 3f));
}
}
});
Sulla tastiera fino avete bisogno di cambiare pesi che si adattano al design della tastiera e alla tastiera tornano al default (layout che hai impostato tramite xml/java). Ho testato il codice su 2.3.xe su. E non dimenticate di utilizzare android:inputType="textFilter"
per la password di accesso & EditText
's per rimuovere suggerimenti su ingresso e salvare alcuni pixel. Nel file manifest per l'attività android:windowSoftInputMode="adjustResize|stateHidden"
. stateHidden
viene utilizzato in modo che la tastiera non si attivi quando l'attività viene caricata. Spero che sia d'aiuto. In bocca al lupo.
Potete vedere il mio aggiornamento. Nella parte dell'app di Facebook che contiene i campi di accesso non viene ridimensionata, ma gli elementi superiore e inferiore vengono ridimensionati. Nei miei campi dell'app vengono uniti.Aiutami per favore. Ho scritto l'xml in base alla tua risposta. Nuovo per Android. –
Nel layout di Facebook, poiché il fondo è quasi completamente vuoto, puoi dargli molto meno peso della sezione del campo di accesso, lasciandolo più grande a spese degli altri. Puoi giocare con i pesi delle 3 sezioni per portarlo dove vuoi. Probabilmente farei anche l'altezza di EditTexts e dei pulsanti wrap_content per salvare alcuni pixel. –
Grazie, giocare con il peso risolto è quello di cui avevo bisogno. Sai come modificare il peso di una vista/layout a livello di codice? –