Programlı olarak kısıtlama koyma fikri yorucu olabilir. Aşağıdaki bu çözüm, kısıtlama, doğrusal vb. Herhangi bir düzen için işe yarayacaktır. sahip olmak.
Tek yapmanız gereken, görünümü programlı olarak ve alt öğe olarak FrameLayout'a addChild()yöntemi kullanarak şişirmek . Ardından çalışma zamanı sırasında görüşünüz şişirilir ve doğru konuma yerleştirilir. Android önerilerine göre, FrameLayout'a [link] yalnızca bir childView eklemelisiniz .
Kodunuzun, belirli bir konumda programlı olarak TextView oluşturmak istediğinizi varsayalım:
Aşama 1:
Şişirilecek görünümü içeren mizanpajınızda, doğru konuma bir FrameLayout yerleştirin ve "id" deyin.
Adım 2 Çalışma
zamanı sırasında şişirmek istediğiniz görünüm olarak kök öğeyle bir düzen oluşturun, düzen dosyasını "textview.xml" olarak adlandırın:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
</TextView>
BTW, frameLayout öğenizin düzen parametrelerini her zaman wrap_content olarak ayarlayın; aksi takdirde çerçeve düzeni üst öğe, yani etkinlik yani telefon ekranı kadar büyük olur.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Ayarlanmadıysa, çerçevenin alt görünümü varsayılan olarak çerçeve düzeninin sol üst kısmına gittiğinden, görünümünüz ekranın sol üst kısmına uçar.
Aşama 3
Oncreate yönteminizde şunları yapın:
FrameLayout frameLayout = findViewById(R.id.container);
TextView textView = (TextView) View.inflate(this, R.layout.textview, null);
frameLayout.addView(textView);
(Son parametre ayarının Not findViewByIdiçin nullçağırarak ve görünümü ilave addView()kap görünümü (frameLayout) basitçe geçirilmesi ile şişirilmiş bir görünümü bağlama aynıdır true3. parametresinde findViewById(). Daha fazla bilgi için, bakınız , bu .)