EditTextÔÇÖin Etkinlik ba┼člang─▒c─▒nda odaklanmas─▒n─▒ ├Ânleme


Al─▒nan cevaba git


Activity ─░ki elementli bir Android'im var :

  1. EditText
  2. ListView

Benim Activity ba┼člad─▒─č─▒mda, EditText hemen giri┼č oda─č─▒ vard─▒r (yan─▒p s├Ânen imle├ž). Herhangi bir kontrol├╝n ba┼člang─▒├žta giri┼č oda─č─▒na sahip olmas─▒n─▒ istemiyorum. Denedim:

 EditText.setSelected(false);
 

┼×anss─▒z. Ba┼člad─▒─č─▒nda EditText kendini se├žmemeye nas─▒l ikna edebilirim Activity ?


2746





2009-10-12




Cevap say─▒s─▒n─▒ say: 30






Luc ve Mark'─▒n m├╝kemmel cevaplar─▒ ancak iyi bir kod ├Ârne─či eksik. Etiketi a┼ča─č─▒daki ├Ârne─če be─čenecek android:focusableInTouchMode="true" ┼čekilde eklemek <LinearLayout> sorunu ├ž├Âzecektir.

 <!-- Dummy item to prevent AutoCompleteTextView from receiving focus -->
<LinearLayout
    android:focusable="true" 
    android:focusableInTouchMode="true"
    android:layout_width="0px" 
    android:layout_height="0px"/>

<!-- :nextFocusUp and :nextFocusLeft have been set to the id of this component
to prevent the dummy from receiving focus again -->
<AutoCompleteTextView android:id="@+id/autotext"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:nextFocusUp="@id/autotext" 
    android:nextFocusLeft="@id/autotext"/>
 

2464







As─▒l sorun, sadece odaklanmas─▒n─▒ istemedi─čin ┼čey mi? Veya odaklanman─▒n bir sonucu olarak sanal klavyeyi g├Âstermesini istemiyor EditText musunuz? EditText Odaklanmaya odaklanmakla ilgili bir sorun g├Ârm├╝yorum , ancak kullan─▒c─▒ a├ž─▒k├ža odaklanmak iste─činde bulunmad─▒─č─▒nda softInput penceresini a├žmak EditText (ve bunun sonucunda klavyeyi a├žmak) kesinlikle bir sorun .

Sanal klavyenin sorunu buysa, AndroidManifest.xml <activity> element belgelerine bak─▒n.

android:windowSoftInputMode="stateHidden" - aktiviteye girerken daima gizleyin.

ya android:windowSoftInputMode="stateUnchanged" - (├Ârn yok de─či┼čtirmemesi g├Âstermek zaten g├Âsterilmez ise bunu ancak faaliyeti girerken A├ž─▒k olsayd─▒, o a├ž─▒k b─▒rak─▒n).


1644


2010-04-09





Daha basit bir ├ž├Âz├╝m var. Bu ├Âzellikleri ana d├╝zeninizde ayarlay─▒n:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true" >
 

Ve ┼čimdi, aktivite ba┼člad─▒─č─▒nda bu ana d├╝zen varsay─▒lan olarak odaklanacakt─▒r.

Ayr─▒ca, oda─č─▒ tekrar ana d├╝zene vererek, ├Ârne─čin ├žal─▒┼čma s─▒ras─▒ndaki ├žocuk g├Âr├╝n├╝mlerinden (├Ârne─čin, ├žocuk d├╝zenlemeyi bitirdikten sonra) kald─▒rabiliriz:

 findViewById(R.id.mainLayout).requestFocus();
 

─░yi yorum dan Guillaume Perrot :

android:descendantFocusability="beforeDescendants" varsay─▒lan gibi g├Âr├╝n├╝yor (tamsay─▒ de─čeri 0'd─▒r). Sadece ekleyerek ├žal─▒┼č─▒r android:focusableInTouchMode="true" .

Ger├žekten, y├Ântemde beforeDescendants setin varsay─▒lan oldu─čunu g├Ârebiliriz ViewGroup.initViewGroup() (Android 2.2.2). Fakat 0'a e┼čit de─čil. ViewGroup.FOCUS_BEFORE_DESCENDANTS = 0x20000;

Guillaume'e te┼čekk├╝rler.


1103







Buldu─čum tek ├ž├Âz├╝m:

  • Bir LinearLayout olu┼čturun (Ba┼čka Layout t├╝rleri i┼če yarayacak m─▒ bilmiyorum)
  • Nitelikleri ayarlay─▒n android:focusable="true" ve android:focusableInTouchMode="true"

Ve EditText faaliyete ba┼člad─▒ktan sonra odak noktas─▒ olmayacak


417


2009-10-23





Sorun, yaln─▒zca XML form d├╝zende g├Ârebildi─čim bir ├Âzellikten geliyor gibi g├Âr├╝n├╝yor .

EditText XML etiketlerinin i├žindeki bildirimin sonunda bu sat─▒r─▒ kald─▒rd─▒─č─▒n─▒zdan emin olun :

 <requestFocus />
 

Bunun gibi bir ┼čey vermeli:

 <EditText
   android:id="@+id/emailField"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:inputType="textEmailAddress">

   //<requestFocus /> /* <-- without this line */
</EditText>
 

78







di─čer posterler taraf─▒ndan sa─članan bilgileri kullanarak a┼ča─č─▒daki ├ž├Âz├╝m├╝ kulland─▒m:

d├╝zen XMLÔÇÖinde

 <!-- Dummy item to prevent AutoCompleteTextView from receiving focus -->
<LinearLayout
    android:id="@+id/linearLayout_focus"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:layout_width="0px"
    android:layout_height="0px"/>

<!-- AUTOCOMPLETE -->
<AutoCompleteTextView
    android:id="@+id/autocomplete"
    android:layout_width="200dip"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dip"
    android:inputType="textNoSuggestions|textVisiblePassword"/>
 

onCreate () i├žinde

 private AutoCompleteTextView mAutoCompleteTextView;
private LinearLayout mLinearLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout);

    //get references to UI components
    mAutoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autocomplete);
    mLinearLayout = (LinearLayout) findViewById(R.id.linearLayout_focus);
}
 

ve son olarak, onResume () i├žinde

 @Override
protected void onResume() {
    super.onResume();

    //do not give the editbox focus automatically when activity starts
    mAutoCompleteTextView.clearFocus();
    mLinearLayout.requestFocus();
}
 

70







Bunun yerine clearFocus () i┼člevini deneyin setSelected(false) . Android'deki her g├Âr├╝┼čte hem odaklanabilirlik hem de se├žilebilirlik var ve sadece oda─č─▒ temizlemek istedi─činizi d├╝┼č├╝n├╝yorum.


68







A┼ča─č─▒dakiler d├╝zenleme metninin olu┼čturuldu─čunda odaklanmas─▒n─▒ durduracak, ancak dokundu─čunuzda tutacakt─▒r.

 <EditText
    android:id="@+id/et_bonus_custom"
    android:focusable="false" />
 

B├Âylece xml'de false olarak fokuslanabilir olarak ayarlay─▒n ancak anahtar, a┼ča─č─▒daki dinleyiciyi ekledi─činiz java'dad─▒r:

 etBonus.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        v.setFocusable(true);
        v.setFocusableInTouchMode(true);
        return false;
    }
});
 

Yanl─▒┼č d├Ând├╝rd├╝─č├╝n├╝z, yani olay─▒ t├╝ketmedi─činiz i├žin odaklanma davran─▒┼č─▒ normal ┼čekilde ilerler.


66







Bireysel olarak birka├ž cevap denedim ama odak hala EditText'te. Sadece a┼ča─č─▒daki iki ├ž├Âz├╝mden birini kullanarak ├ž├Âzmeyi ba┼čard─▒m.

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/mainLayout"
  android:descendantFocusability="beforeDescendants"
  android:focusableInTouchMode="true" >
 

(G├╝m├╝┼čten gelen https://stackoverflow.com/a/8639921/15695 )

ve kald─▒r

  <requestFocus />
 

EditText ┼čirketinde

(Floydaddict referans─▒ https://stackoverflow.com/a/9681809 )


56







Ge├ž ama en basit cevap, sadece bunu XML'in ├╝st d├╝zenine ekleyin.

 android:focusable="true" 
android:focusableInTouchMode="true"
 

Size yard─▒mc─▒ olsayd─▒, oy verin! Mutlu Kodlama :)


46







Bu ├ž├Âz├╝mlerin hi├žbiri benim i├žin ├žal─▒┼čt─▒. Otomatik odaklamay─▒ d├╝zeltme y├Ântemim:

 <activity android:name=".android.InviteFriendsActivity" android:windowSoftInputMode="adjustPan">
    <intent-filter >
    </intent-filter>
</activity>
 

42







Basit ├ž├Âz├╝m: In AndroidManifest i├žinde Activity etiketinin kullan─▒ma

 android:windowSoftInputMode="stateAlwaysHidden"
 

39







Sadece ayarlayabilirsiniz "odaklanabilir" ve "dokunmatik modunda odaklanabilir" ilk true de─čerine TextView ait layout . Bu ┼čekilde aktivite ba┼člad─▒─č─▒nda TextView odaklan─▒lacak, ancak do─čas─▒ gere─či, ekrana odaklanm─▒┼č hi├žbir ┼čey g├Ârmeyeceksiniz ve elbette, hi├žbir klavye g├Âsterilmeyecek ...


34


2011-11-06





A┼ča─č─▒daki benim i├žin ├žal─▒┼čt─▒ Manifest . Yazmak ,

 <activity
android:name=".MyActivity"
android:windowSoftInputMode="stateAlwaysHidden"/>
 

33







Oda─č─▒ b├╝t├╝n alanlardan programl─▒ olarak temizlemem gerekiyordu. Ana d├╝zen tan─▒m─▒ma a┼ča─č─▒daki iki ifadeyi ekledim.

 myLayout.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
myLayout.setFocusableInTouchMode(true);
 

Bu kadar. Sorunumu an─▒nda ├ž├Âzd├╝m. Beni do─čru y├Âne ├ževirdi─čin i├žin te┼čekk├╝rler Silver.


29







Dosyan─▒n android:windowSoftInputMode="stateAlwaysHidden" etkinlik etiketine ekleyin Manifest.xml .

Kaynak


26







Etkinli─činiz hakk─▒nda a gibi ba┼čka bir g├Âr├╝┼č├╝n├╝z varsa ListView , ┼čunlar─▒ da yapabilirsiniz:

 ListView.requestFocus(); 
 

i├žinde onResume() odaklanmak i├žin editText .

Bu sorunun cevapland─▒─č─▒n─▒ biliyorum, ancak sadece benim i├žin i┼če yarayan alternatif bir ├ž├Âz├╝m sa─člad─▒ :)


22


2011-03-07





onCreate Y├Ântemde a┼ča─č─▒daki ekleyin :

 this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
 

21







Bunu ilk d├╝zenlenebilir alan─▒n─▒zdan ├Ânce deneyin:

 <TextView  
        android:id="@+id/dummyfocus" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="@string/foo"
        />

----

findViewById(R.id.dummyfocus).setFocusableInTouchMode(true);
findViewById(R.id.dummyfocus).requestFocus();
 

20







XML'i i┼člevsellik ile ilgili bir ┼čeyle kirletmeyi sevmedi─čim i├žin, oda─č─▒ ilk netlenebilir g├Âr├╝n├╝mden ÔÇť┼čeffaf bir ┼čekildeÔÇŁ ├žalan ve ard─▒ndan gerekti─činde kendini kald─▒rmay─▒ sa─člayan bu y├Ântemi olu┼čturdum!

 public static View preventInitialFocus(final Activity activity)
{
    final ViewGroup content = (ViewGroup)activity.findViewById(android.R.id.content);
    final View root = content.getChildAt(0);
    if (root == null) return null;
    final View focusDummy = new View(activity);
    final View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener()
    {
        @Override
        public void onFocusChange(View view, boolean b)
        {
            view.setOnFocusChangeListener(null);
            content.removeView(focusDummy);
        }
    };
    focusDummy.setFocusable(true);
    focusDummy.setFocusableInTouchMode(true);
    content.addView(focusDummy, 0, new LinearLayout.LayoutParams(0, 0));
    if (root instanceof ViewGroup)
    {
        final ViewGroup _root = (ViewGroup)root;
        for (int i = 1, children = _root.getChildCount(); i < children; i++)
        {
            final View child = _root.getChildAt(i);
            if (child.isFocusable() || child.isFocusableInTouchMode())
            {
                child.setOnFocusChangeListener(onFocusChangeListener);
                break;
            }
        }
    }
    else if (root.isFocusable() || root.isFocusableInTouchMode())
        root.setOnFocusChangeListener(onFocusChangeListener);

    return focusDummy;
}
 

17







Ge├ž, ama belki yard─▒mc─▒ olabilir. Sonra diyoruz D├╝zeninize ├╝st├╝nde bir kukla EditText olu┼čturun myDummyEditText.requestFocus() i├žinde onCreate()

 <EditText android:id="@+id/dummyEditTextFocus" 
android:layout_width="0px"
android:layout_height="0px" />
 

Bekledi─čim gibi davran─▒yor gibi g├Âr├╝n├╝yor. Yap─▒land─▒rma de─či┼čikliklerini vs. yapmaya gerek yok. Uzun bir TextView i├žeren bir aktivite i├žin buna ihtiyac─▒m vard─▒ (talimatlar).


15


2011-02-13





Evet ben de ayn─▒s─▒n─▒ yapt─▒m - ba┼člang─▒├žta odaklanan 'kukla' bir do─črusal d├╝zen yarat. Ayr─▒ca, 'sonraki' odak kimliklerini belirledim, b├Âylece kullan─▒c─▒ bir kez kayd─▒rd─▒ktan sonra daha fazla odaklanamaz:

 <LinearLayout 'dummy'>
<EditText et>

dummy.setNextFocusDownId(et.getId());

dummy.setNextFocusUpId(et.getId());

et.setNextFocusUpId(et.getId());
 

sadece bir bak─▒┼č a├ž─▒s─▒na odaklanmaktan ├žok ├žal─▒┼čmak ..

Te┼čekk├╝rler


13


2009-10-23





Benim i├žin, t├╝m cihazlarda i┼če yarayan ┼čudur:

     <!-- fake first focusable view, to allow stealing the focus to itself when clearing the focus from others -->

    <View
    android:layout_width="0px"
    android:layout_height="0px"
    android:focusable="true"
    android:focusableInTouchMode="true" />
 

Bunu sadece sorunlu bak─▒┼č a├ž─▒s─▒ndan ├Ânce bir g├Âr├╝n├╝m olarak koyun, o kadar.


12







Bu sat─▒r─▒ ├ťst Mizanpaj─▒n─▒za yaz─▒n ...

  android:focusableInTouchMode="true"
 

12







Bu m├╝kemmel ve en kolay ├ž├Âz├╝md├╝r.

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
 

10


2015-03-31





Yapt─▒─č─▒m en basit ┼čey onCreate'da ba┼čka bir g├Âr├╝n├╝me odaklanmak.

     myView.setFocusableInTouchMode(true);
    myView.requestFocus();
 

Bu, yumu┼čak klavyenin gelmesini durdurdu ve EditText'te imle├ž yan─▒p s├Ânmedi.


9







Bu kodu , klavyeyi a├žmak istemedi─činiz yerin i├žine Manifest dosyaya yaz─▒n Activity .

 android:windowSoftInputMode="stateHidden"
 

Liste dosyas─▒:

  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.projectt"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="24" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
         <activity
            android:name=".Splash"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Login"
            **android:windowSoftInputMode="stateHidden"**
            android:label="@string/app_name" >
        </activity>

    </application>

</manifest>
 

8







 <TextView
    android:id="@+id/TextView01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:focusable="true"
    android:focusableInTouchMode="true"
    style="@android:style/Widget.EditText"/>
 

8


2012-02-14





At onCreate senin Faaliyet, sadece kullan─▒m─▒n─▒ eklemek clearFocus() i├žin EditText eleman─▒ ├╝zerinde. ├ľrne─čin,

 edittext = (EditText) findViewById(R.id.edittext);
edittext.clearFocus();
 

Oda─č─▒ ba┼čka bir ├Â─čeye y├Ânlendirmek istiyorsan─▒z, bunu kullan─▒n requestFocus() . ├ľrne─čin,

 button = (Button) findViewById(R.id.button);
button.requestFocus();
 

7







Bunu, EditText d├╝zen geni┼čli─čini ve y├╝ksekli─čini ayarlanm─▒┼č bir kukla olu┼čturarak elde edebilir 0dp ve bu g├Âr├╝n├╝me odaklanmay─▒ talep edebilirsiniz. A┼ča─č─▒daki kod par├žas─▒n─▒ xml d├╝zeninize ekleyin:

 <EditText
    android:id="@+id/editText0"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:hint="@string/dummy"
    android:ems="10" 
    >
     <requestFocus />
    </EditText>
 

6


2015-06-13

─░lgili yay─▒nlar


Android: Oda─č─▒ kald─▒rmaya zorla EditText? [├žift]

Focus ve: active aras─▒ndaki fark nedir?

EditText'in giri┼č t├╝r├╝n├╝ programl─▒ olarak ┼×─░FRE'den NORMAL'a (veya tersi) de─či┼čtirin.

JQuery UI ileti┼čim kutusunun oda─č─▒ ilk metin kutusuna ayarlamas─▒n─▒ engelle

Etkinlik ba┼člang─▒c─▒nda bir ScrollView'da a┼ča─č─▒ya do─čru kayd─▒rma

Xdebug'un PhpStorm ile ilk s─▒rada durmas─▒ nas─▒l engellenir?

Git'in bu taahh├╝tten bir dosyadaki de─či┼čiklikleri takip etmesini nas─▒l durdurabilirim?

Windows ba┼člang─▒c─▒nda bir C# uygulamas─▒ nas─▒l ├žal─▒┼čt─▒r─▒l─▒r?

Yaz─▒l─▒m klavyesi g├Âr├╝nd├╝─č├╝nde, EditText alan─▒m─▒n oda─č─▒n─▒ kaybetmesine neden oluyor

Kullan─▒c─▒ yazarken bir EditText ├Â─česinin kendisini yeniden boyutland─▒rmas─▒n─▒ nas─▒l ├Ânlerim?

Etiketle ilgili di─čer sorular [android]


Reax JSX'in ─░├žinde D├Âng├╝

HTML5'te float giri┼č t├╝r├╝ var m─▒?

Python'da bir listenin t├╝m perm├╝tasyonlar─▒ nas─▒l olu┼čturulur?

Git ile projenin ilk taahh├╝d├╝n├╝ de─či┼čtir? [├žift]

UTF-8, UTF-16 ve UTF-32

─░┼čaret├žileri anlamadaki engeller nelerdir ve bunlar─▒ a┼čmak i├žin neler yap─▒labilir? [kapal─▒]

LINQ to SQL'de bir i├ž birle┼čim s├Âzdizimi nedir?

z-index sabit konumland─▒rma ile ├žal─▒┼čm─▒yor

jQuery UI DatePicker yaln─▒zca ay y─▒l─▒n─▒ g├Âsterecek

Haz─▒rda Bekletme kullan─▒l─▒rken bir parametre dizesi parametre de─čerleri ile nas─▒l yazd─▒r─▒l─▒r