كيف يمكنني منع EditText من حجم نفسه عندما يقوم المستخدم بالكتابة ؟
-
05-07-2019 - |
سؤال
لدي EditText
و 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
نصائح أخرى
ما أقوم به هو في OnCreate الخاص للنشاط، وقياس 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 ثم تنسيق وصولا الى حجم الحد الأقصى الذي شاشتي يمكن التعامل معها. عندما كنت حفظ هذا الخروج إلى DB، وسوف حفظه كنص العرض والنص الأصلي.
إذا ذهبت الصفحة أضع شرحا أطول.
والطريقة الصحيحة للقيام بذلك سيكون لضبط الروبوت: minWidth والروبوت: maxWidth يساوي العرض الذي تريده. بهذه الطريقة لن تضطر إلى ضبط تخطيط لاستخدام الروبوت: layout_weight
وعلى سبيل المثال إذا كنت تريد EDITTEXT الخاص بك لتكون دائما 80 بكسل الكثافة بغض النظر عن عدد الأحرف التي تقوم بكتابتها في استخدام ما يلي:
android:minWidth="80dp"
android:maxWidth="80dp"
كان لدي نفس الاستعلام.ولكن لدي EditText و زر بجانب بعضها البعض في التخطيط الخطي.حاولت الروبوت:layout_weight="1" EditText android:layout_width="0dp" وعملت فقط الكمال!!شكرا جزيلا!
والحل المختار يعمل، ولكن اسمحوا لي أن إضافة القليل من تكملة:
كما ترى
android:layout_weight="0.15"
(القيمة ليست مهمة)
ثم
android:layout_width="0dp"
إذا كان LinearLayout
هو الأفقية
أو
android:layout_height="0dp"
إذا كان LinearLayout
هو عمودي.