J'essaie de créer une linearlayout vertical avec des poids qui a une taille plus grande que l'écran. Disons 2x la taille de l'écran. Pour que cela fonctionne, je devrais évidemment être capable de faire défiler. Malheureusement, je ne peux pas comprendre un moyen de faire cela. J'ai essayé d'utiliser les poids de la disposition et de régler la somme de poids en tant que moitié de la somme réelle des poids de tous les composants (donc si tous les composants poids sont 20, je définit la somme de poids comme 10) et géré pour le faire fonctionner mais malheureusement le Le défilement ne fonctionne plus pour une raison quelconque.
Y a-t-il quelque chose qui me manque? p>
Ceci est le code qui rend le linéarlayout deux fois plus grand que l'écran, mais le défilement ne fonctionne pas: p>
3 Réponses :
Le problème Voici votre utilisation de Par conséquent, dans votre exemple, votre premier Je ne suis pas totalement sûr de ce que votre objectif final est; Essayez-vous d'avoir des entrées de texte qui poussent avec l'entrée utilisateur, et le Si tel est le cas, cela fonctionnera: P> layout_weight code> et
poids code> n'est pas valide. Il est important de se rappeler que
android: layout_weight code> ne peut utiliser que l'espace restant
eittext code> prend entièrement l'intégralité de l'écran et votre seconde est entièrement exclu de la vue. Parce que le second
eittext code> est recadré, le
linearlayout code> a pris l'écran en entier et il n'y a rien pour le
ScrollView code> à faire. P>
ScrollView code> gère le trop-plein? p>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="#000000"
android:fillViewport="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:orientation="vertical" >
<EditText
android:id="@+id/id1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#DCDCDC"
android:gravity="center"
android:text="ONE ONE ONE"
android:textIsSelectable="false"
android:textSize="45sp" />
<EditText
android:id="@+id/id2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#AAAAAA"
android:gravity="center"
android:text="TWO TWO TWO"
android:textIsSelectable="false"
android:textSize="45sp" />
</LinearLayout>
</ScrollView>
Bonjour. Merci pour la réponse. Fondamentalement, en une phrase, un bon exemple de ce que j'essaie d'atteindre est 3 TextViews, chacun avec la taille 1/2 de la taille de l'écran. Cela signifie que les 2 apparaîtront à l'écran et que le troisième apparaîtrait que lors du défilement.
Il n'y a aucun moyen de le faire dans Pure XML; Vous devez mesurer l'écran et définir la hauteur de la vue dans le code. Je peux fournir un échantillon pour vous.
@sakiskaliakoudas pour que vous souhaitiez définir ensemble layout_height comme 0 dP et leyout_weight comme 0.5
@shijub qui ne fonctionne pas, s'il vous plaît voir ma réponse ci-dessus; Faire ce que vous avez dit des résultats dans la mise en page remplissant la fenêtre sans défilement. Ajouter sur un 3ème eittext code> et il sera inaccessible hors écran.
@sakiskaliakoudas ne définit pas layout_weight comme 2.make It tandis que 0,5 pour les deux textes d'édition.
@shijub juste pour réitérer, cela ne fonctionne pas. Tout ce qui sera effectué est de remplir la fenêtre de 50% par EditText et ne lui permettez pas de faire défiler.
Basé sur votre commentaire, voici une manière programmatique d'atteindre ce que vous recherchez. Je ne crois pas qu'il existe un moyen d'accomplir cela dans la mise en page pure xml.
mise en page: p> Activité: p> public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get display size -- API L13 and up. Otherwise use getResources().getDisplayMetrics();
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
// You want size to be 50% per EditText, so divide available height by 2.
// Note: this is absolute height, does not take into consideration window decoration!
int editTextHeight = size.y / 2;
// Get a handle to your EditTexts
EditText t1 = (EditText) findViewById(R.id.id1);
EditText t2 = (EditText) findViewById(R.id.id2);
EditText t3 = (EditText) findViewById(R.id.id3);
// Set height to 50% of screen size each
t1.setHeight(editTextHeight);
t2.setHeight(editTextHeight);
t3.setHeight(editTextHeight);
}
Merci pour la réponse. Je savais comment faire cela de manière programmative, mais vaut toujours la prime même pour confirmer que cela ne peut pas être fait dans Pure XML
Vous avez déclaré la hauteur de votre J'espère que cela vous aidera. P> linearlayout code> "
match_parent code>" qui est égal à la hauteur de ses parents. Il ne fera jamais défiler tant que le contenu est plus grand puis
ScrollView code>. Tout d'abord, vous devez donner une hauteur fixe comme (50dP) ou
wrap_content code> ou vous devez définir sa hauteur programmatique (comme 2x hauteur de l'écran comme mentionnant). p>
poids code> et
poids code> forcera toujours vos éléments à installer dans votre
linearlayouts code> Taille actuelle afin d'essayer de ne pas l'utiliser. p>