Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Android programlamada, elemanların telefon ekranında kapladıkları yerin önceliğini layout weight değeri ile belirleyebiliyoruz. Bazen bu değeri kod içerisinde dinamik olarak değiştirmek gerekebilir. Bu gibi durumda bu değere doğrudan eleman üzerinden erişip değiştiremiyoruz. Bu problemi aşağıdaki kodlar ile çözebilirsiniz.
  • LinearLayout.LayoutParams parametreler = (LinearLayout.LayoutParams)
  • GoruntuElemaniniz.getLayoutParams();
  • parametreler.weight = 1.0f;    //Layout weight değeri
  • GoruntuElemaniniz.setLayoutParams(parametreler);

Android'te ImageView elemanını kullandığınızda bu elemanın içerisindeki resmi statik olarak girmeniz gerekir. Daha sonra değiştirmek isterseniz R.KlasorAdi.ImageAdi şeklinde resim dosyasının resource'una erişerek içerisindeki resmi değiştirebilirsiniz. Ancak eğer siz belli bir şarta göre bu resmi değiştirmek isterseniz bu yol ile yapmanız mümkün olmayacaktır. Bende uygulamamda belli bir şarta göre resmin değiştirilmesini istedim ve bu problemle karşılaştım. Daha sonra bulduğum çözümü sizlerle paylaşmak istedim.
Android'te ImageView elemanının içeriğini dinamik olarak değiştirmek için
  • int id = getResources().getIdentifier("PaketAdi:drawable/" + "imageAdi", null, null);
kodunu kullanabilirsiniz. Burada PaketAdi uygulamanızın paket adıdır, drawable ile belirtilen kısım klasörün adıdır ve genellikle resimler bu klasör içerisine koyulur. Siz farklı bir klasör dizini içerisinde resimlerinizi tutacaksanız drawable yerine uygun dizini yazmanız gerekir. imageAdi yazan yere klasör içerisinde bulunan image dosyanızın adını verdiğinizde bu kod geriye resource'u döndürür. Daha sonra bu dönen değeri
  • imageView.setImageResource(id);
kodu ile imageView elemanınıza set edebilirsiniz.