Belirli bir alanın görünür olmasını istediğiniz bir eylemin meydana geldiği bir senaryo var. Bu iyi çalışır, ancak TextEdit gibi diğer birkaç alanı içeren bir LinearLayout üzerinde setVisible (View.VISIBLE) olarak adlandırdığımda, odağı TextEdit'e kaydırır (veya en azından ekrana kaydırır).SetVisibility çağrılırken odağı değiştirmiyor (Görünüm.VISIBLE)
SetVisibility (View.VISIBLE) çağrılırken odak değişikliğine sahip olmanın bir yolu var mı?
Ben SetVisible çağıran yapabilirsiniz LinearLayout XML düzeni: it başlatır
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true">
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="normal"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingBottom="5dp"
android:text="" />
<EditText android:id="@+id/entry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:gravity="right" />
<View
android:layout_marginTop="8dp"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/grey"
android:visibility="gone" />
</LinearLayout>
kodu:
private TextView mName;
private EditText mEntry;
...
private void initialize() {
LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.field_multiline_entry, this);
// setup fields
mName = (TextView)findViewById(R.id.name);
mEntry = (EditText)findViewById(R.id.entry);
mEntry.addTextChangedListener(textWatcher);
}
Ve kod bu setVisibility:
numaralı telefonu arıyor if(sectionFieldView != null && sectionFieldView.getVisibility() != View.VISIBLE)
{
sectionFieldView.setVisibility(View.VISIBLE);
}
Teşekkürler!
GÜNCELLEME aşağıda arkadaşıma
Teşekkür, aşağıdaki kod çalışır. Temelde, LinearLayout'un tüm torunlarını odaklama yapamaz hale getirir, bu da görünür hale getirildiğinde ekranın, odaklanmadıkları için onlara kaydırılmaması anlamına gelir. Sadece yolu bugüne kadar ben ... Bunu önlemek için
((ViewGroup) fieldView).setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
fieldView.setVisibility(View.VISIBLE);
((ViewGroup) fieldView).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
deneyin ayarı '(yanlış) editText.setFocusable' Bu temelde ben görünür LinearLayout içeriğini yapmak gerekir ancak torunları görünürlük elde etmek istemezler ... zamanında olması gereken – Jas