Como evito que um EdittExt se redigiem quando o usuário está digitando?
-
05-07-2019 - |
Pergunta
eu tenho um EditText
e a Button
Situado um ao lado da outros na mesma linha horizontal. Parece ótimo, exceto quando o usuário entra em muito texto, o EditText
é redimensionado e o Button
é esmagado.
eu tenho ambos EditText
e Button
definido como layout_width="wrap_content"
. "fill_parent"
bagunçar o layout, e não quero usar tamanhos absolutos se não precisar - a maneira como agora é ótima na paisagem e no retrato, eu simplesmente não quero EditText
para redimensionar.
Meu layout:
<TableLayout
android:id="@+id/homelayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow>
<TextView
android:id="@+id/labelartist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Find artists:" />
</TableRow>
<TableRow>
<EditText
android:id="@+id/entryartist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="6"
android:background="@android:drawable/editbox_background"
android:editable="true"
android:padding="5px"
android:singleLine="true" />
<Button
android:id="@+id/okartist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:layout_weight="1"
android:text="Search" />
</TableRow>
</TableLayout>
Solução
Para uso EditText
android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"
E para o botão, não especifique android:layout_weight
Outras dicas
O que faço é no OnCreate para a atividade, meça o EdittEXT primeiro e depois aplique sua maxwidth.
Você pode fazer isso usando código semelhante ao seguinte:
EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());
Dar EditText
uma maxWidth
. Isso deve impedir que ele redimensione além da largura que você forneceu. Além disso, se você deseja que ela esteja contida em 1 linha, defina o maxLines
definindo para 1 também.
Apenas use:
android:layout_width="fill_parent"
para EdittExt e Button. Também funcionará definido para o EditText, mas é melhor tê -lo em ambos.
Você pode definir o tamanho do seu EditText, como mostra acima
android:minWidth="80dp"
android:maxWidth="80dp"
ou
android:layout_width="60dp"
ou
Você pode aplicar uma imagem em segundo plano que deseja, mas não se esqueça de definir sua altura e largura com wrap_content.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Eu tive um problema semelhante, mas não conseguia fazer o que foi funcionar acima. O que eu fiz é pegar o texto da caixa EdittExt e, em seguida, formatá -lo até o tamanho máximo que minha tela poderia suportar. Quando eu salvo isso no banco de dados, salvamos como texto de exibição e texto original.
Se tu vais para esta página Eu coloquei uma explicação mais longa.
A maneira correta de fazer isso seria definir o Android: Minwidth e Android: MaxWidth igual à largura que você deseja. Dessa forma, você não precisará ajustar seu layout para usar o Android: layout_weight.
Por exemplo, se você deseja que seu EditText seja sempre 80 pixels de densidade, não importa quantos caracteres você digite usar o seguinte:
android:minWidth="80dp"
android:maxWidth="80dp"
Eu tive a consulta exata. Mas eu tinha um EditText e um botão um ao lado do outro em um layout linear. eu tentei Android: layout_weight = "1" para edittextAndroid: layout_width = "0dp" e funcionou perfeito !! Muito obrigado!
A solução escolhida funciona, mas deixe -me acrescentar um pouco de complemento:
se você usarandroid:layout_weight="0.15"
(o valor não é importante)
então
android:layout_width="0dp"
se o LinearLayout
é horizontal
ou
android:layout_height="0dp"
se o LinearLayout
é vertical.