2013-07-17 23 views
8

Sadece klavye görüntülendiğinde EditText'in imlecini nasıl gösterebilirim? Şu anda EditText etkin olmasa ve klavye gizlenmiş olsa bile imleç yanıp sönüyor, bu gerçekten rahatsız edici.Android: sadece klavye görüntülendiğinde edittext imlecini gösterme

Bu benim düzen böyle görünecektir:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/activity_main_root" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/white" > 

    <ImageButton 
     android:id="@+id/activity_main_add_button" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:background="@drawable/button" 
     android:contentDescription="@string/desc_add" 
     android:onClick="addGame" 
     android:src="@android:drawable/ic_input_add" 
     android:tint="@color/gray" /> 

    <View 
     android:id="@+id/stub1" 
     android:layout_width="2dp" 
     android:layout_height="40dp" 
     android:layout_toRightOf="@id/activity_main_add_button" 
     android:background="@color/light_gray" /> 

    <ImageButton 
     android:id="@+id/activity_main_menu_button" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:layout_toRightOf="@id/stub1" 
     android:background="@drawable/button" 
     android:contentDescription="@string/desc_add" 
     android:onClick="showMenu" 
     android:scaleType="fitXY" 
     android:src="@drawable/square_button" 
     android:tint="@color/gray" /> 

    <View 
     android:id="@+id/stub2" 
     android:layout_width="2dp" 
     android:layout_height="40dp" 
     android:layout_toRightOf="@id/menu_button" 
     android:background="@color/light_gray" /> 

    <EditText 
     android:id="@+id/activity_main_search" 
     android:layout_width="fill_parent" 
     android:layout_height="40dp" 
     android:layout_toRightOf="@id/stub2" 
     android:background="@drawable/default_background" 
     android:gravity="center" 
     android:hint="@string/search_game" 
     android:inputType="text" 
     android:textColor="@color/black" 
     android:textSize="20sp" 
     android:textStyle="bold" /> 

    <ListView 
     android:id="@+id/activity_main_list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/activity_main_add_button" 
     android:layout_margin="10dp" 
     android:divider="@color/white" 
     android:dividerHeight="10dp" > 
    </ListView> 

</RelativeLayout> 

sayesinde Solidüs

+0

olası yinelenen [ imleci editText'ten kaldır] (http: // sta ckoverflow.com/questions/13029917/remove-cursor-from-edittext) – codeMagic

cevap

0

Birden seçenekleri denedik ve sadece bir doğru çalıştığından.

Kod

public class MainActivity extends Activity { 
    EditText edit = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
     edit = (EditText) findViewById(R.id.edit); 

     final View activityRootView = findViewById(R.id.activityRoot); 
     activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
       Rect r = new Rect(); 
       activityRootView.getWindowVisibleDisplayFrame(r); 
       int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top); 
       if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... 
        if (edit != null) { 
         edit.setCursorVisible(true); 
        } 
       } else { 
        if (edit != null) { 
         edit.setCursorVisible(false); 
        } 
       } 
      } 
     }); 
    } 
} 

Detaylar

fikri algılamak için bir ViewTreeObserver kullanmaktır: orada bunu yapmak için daha temiz bir yoldur ama bu benim için çalıştı olabilir Muhtemelen klavye olan activityRoot (aktivitenizin kök düzeninin kimliği) bir şey tarafından gizlenir (gerçek yüksekliğin düzenin başlangıç ​​yüksekliğiyle karşılaştırılması).

this question kullanarak çözümü buldum.

Umarım bu kod birilerine yardımcı olur.

android:cursorVisible="false" 

2) OnClickListener Set:

-3

sizin EditText altında xml Set EditText

+0

lütfen yardımcı oldugunuz yerlere yorum ekleyin neden yararsızdır – Rahul

+1

ayar cursorVisible to false, EditText'in odaklanmasına rağmen, imleci her zaman gizleyecektir. bunun yerine, odaklamanın ne zaman olduğunu göstermek ancak odaklanma olmadığı zaman gizlemek için imleci istiyoruz –

1

1) içinde

android:cursorVisible="false" 

eklemek ait

iEditText.setOnClickListener(editTextClickListener); 

OnClickListener editTextClickListener = new OnClickListener() 

{ 

    public void onClick(View v) 
    { 
     if (v.getId() == iEditText.getId()) 
     { 
      iEditText.setCursorVisible(true); 
     } 

    } 
}; 
İlgili konular