사용자가 입력 할 때 EditText가 자체화되는 것을 방지하려면 어떻게해야합니까?
-
05-07-2019 - |
문제
나는있다 EditText
그리고 a Button
동일한 수평선으로 서로 옆에 놓습니다. 사용자가 많은 텍스트를 입력 할 때를 제외하고는 멋져 보입니다. EditText
크기가 높아지고 Button
낭비됩니다.
나는 둘 다 가지고있다 EditText
그리고 Button
로 설정 layout_width="wrap_content"
. "fill_parent"
레이아웃을 엉망으로 만들고 필요하지 않으면 절대 크기를 사용하고 싶지 않습니다. 이제는 풍경과 초상화 모두에서 멋지게 보입니다. EditText
크기를 조정합니다.
내 레이아웃 :
<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>
해결책
edittext 사용
android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"
그리고 버튼을 위해 지정하지 마십시오 android:layout_weight
다른 팁
내가하는 일은 활동을 위해 onecreate에서 edittext를 측정 한 다음 MaxWidth를 적용하는 것입니다.
다음과 유사한 코드를 사용하여 수행 할 수 있습니다.
EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());
주다 EditText
ㅏ maxWidth
. 그것은 당신이 제공 한 너비 너머로 크기를 조정하는 것을 막아야합니다. 또한 1 라인 내에 포함되기를 원한다면 maxLines
1로 설정합니다.
그냥 사용 :
android:layout_width="fill_parent"
edittext 및 버튼 모두. 또한 edittext에 대해서도 작동하지만 두 가지를 모두 사용하는 것이 좋습니다.
위에 표시된대로 edittext의 크기를 정의 할 수 있습니다.
android:minWidth="80dp"
android:maxWidth="80dp"
또는
android:layout_width="60dp"
또는
원하는 크기의 배경 이미지를 적용 할 수 있지만 wrap_content로 높이와 너비를 정의하는 것을 잊지 마십시오.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
비슷한 문제가 있었지만 위의 일을 할 수 없었습니다. 내가 한 일은 EditText Box에서 텍스트를 가져간 다음 화면이 처리 할 수있는 최대 크기로 포맷하는 것입니다. 이것을 DB에 저장하면 디스플레이 텍스트와 원본 텍스트로 저장합니다.
당신이 가면 이 페이지에 더 긴 설명을했습니다.
이를 수행하는 올바른 방법은 Android : Minwidth 및 Android : Maxwidth를 원하는 너비와 동일하게 설정하는 것입니다. 이렇게하면 Android : Layout_weight를 사용하기 위해 레이아웃을 조정할 필요가 없습니다.
예를 들어, EditText가 항상 80 개의 밀도 픽셀이 되려면 다음을 입력 한 문자 수에 관계없이 다음을 사용하십시오.
android:minWidth="80dp"
android:maxWidth="80dp"
정확한 쿼리가있었습니다. 그러나 나는 선형 레이아웃에서 서로 옆에 edittext와 버튼을 가지고있었습니다. 나는 시도했다 Android : editText의 경우 layout_weight = "1"입니다안드로이드 : layout_width = "0DP"와 완벽하게 작동했습니다 !! 정말 감사합니다!
선택한 솔루션은 작동하지만 약간의 보완을 추가하겠습니다.
사용하는 경우android:layout_weight="0.15"
(가치는 중요하지 않습니다)
그 다음에
android:layout_width="0dp"
만약 LinearLayout
수평입니다
또는
android:layout_height="0dp"
만약 LinearLayout
수직입니다.