Jak zapobiec zmianie rozmiaru edytowanego tekstu podczas wpisywania przez użytkownika?

Mam EditText i Button ustawione obok siebie na tej samej poziomej linii. Wygląda świetnie, z wyjątkiem, gdy użytkownik wprowadza dużo tekstu, EditText jest zmieniany rozmiar, a {[2] } jest zgnieciony.

Mam zarówno EditText jak i Button ustawione na layout_width="wrap_content". "fill_parent" psuje układ i nie chcę używać absolutnych rozmiarów, jeśli nie muszę - sposób, w jaki teraz wygląda świetnie zarówno w poziomie, jak i w pionie, po prostu nie chcę, aby EditText zmieniał rozmiar.

Mój 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>
Author: Lukas Knuth, 2009-09-11

9 answers

Do użycia EditText

android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"

I dla przycisku android:layout_weight

 85
Author: bhatt4982,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-27 09:37:43

To, co robię, to onCreate dla aktywności, najpierw zmierz EditText, a następnie zastosuj jego maksymalną szerokość.

Możesz to zrobić używając kodu podobnego do następującego:

EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());
 14
Author: Kevin Parker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-11 14:31:35

Daj EditText a maxWidth. To powinno powstrzymać go przed zmianą rozmiaru poza podaną szerokość. Ponadto, jeśli chcesz, aby była zawarta w 1 linii, Ustaw maxLines ustawienie na 1.

 5
Author: Prashast,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-15 18:06:34

Po prostu użyj:

android:layout_width="fill_parent"

Zarówno dla EditText jak i Button. Będzie działać również dla EditText, ale lepiej mieć go na obu.

 2
Author: Kamen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-11 20:55:50

Tutaj wpisz opis obrazka

Musisz dodać android: imeOptions, aby zapobiec temu zachowaniu.

Kliknij tutaj

 2
Author: Dhina k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-18 14:48:56

Możesz zdefiniować rozmiar Twojego edittext, jak pokazano powyżej

android:minWidth="80dp"
android:maxWidth="80dp"

Lub

android:layout_width="60dp"

Lub

Możesz zastosować obraz tła o pożądanym rozmiarze ale nie zapomnij określić jego wysokości i szerokości z wrap_content.

  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
 1
Author: Android developer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-21 19:09:12

Miałem podobny problem, ale nie mogłem uruchomić powyższego. To, co zrobiłem, to wziąć tekst z pola EditText, a następnie sformatować go do maksymalnego rozmiaru, że mój ekran może obsłużyć. Kiedy zapiszę to do DB, zapiszę go jako tekst wyświetlany i tekst oryginalny.

Jeśli wejdziesz na tę stronę umieszczę dłuższe Wyjaśnienie.

 0
Author: Guido,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-30 15:19:23

Poprawnym sposobem na to jest ustawienie android: minWidth i android: maxWidth równej żądanej szerokości. W ten sposób nie będziesz musiał dostosowywać układu, aby używać android: layout_weight.

Na przykład, jeśli chcesz, aby Twój EditText miał zawsze 80 pikseli gęstości, bez względu na liczbę znaków, użyj następującego polecenia:

android:minWidth="80dp"
android:maxWidth="80dp"
 0
Author: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-07 15:35:38

Miałem dokładne zapytanie. Ale miałem EditText i przycisk obok siebie w układzie liniowym. Próbowałem android: layout_weight="1" dla EditText android: layout_width= " 0dp" I zadziałało idealnie!! Wielkie dzięki!

 0
Author: Shruti Dasgopal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-04 06:19:57