كيف يمكنني منع EditText من حجم نفسه عندما يقوم المستخدم بالكتابة ؟

StackOverflow https://stackoverflow.com/questions/1408781

سؤال

لدي 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 ولكن من الأفضل أن يكون ذلك على حد سواء.

وتحتاج إلى إضافة الروبوت: imeOptions لمنع هذا السلوك

انقر هنا

ويمكنك تحديد حجم 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 هو عمودي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top