Я пытаюсь добиться чего-то подобного! Альтернатива флажку Как мне этого добиться?
Я попытался создать рисуемый объект с центральным значком и прозрачным фоном, но значок масштабируется, чтобы заполнить вид, когда рисуемый объект установлен на передний план вида.
Также нет поддержки метода setForground для уровня API ниже 23.
Я намерен добиться этого динамически при нажатии на представление. Пожалуйста помоги!!!
Вы должны добавить прозрачный вид, который соответствует родительским размерам над вашим видом, и добавить вид изображения в его центр. Вы можете настроить уровень прозрачности, чтобы получить желаемый эффект.
для достижения этого представления используйте относительное расположение, как показано ниже.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:gravity = "center"
android:orientation = "vertical">
<RelativeLayout
android:layout_width = "90dp"
android:layout_height = "120dp">
<ImageView
android:id = "@+id/image_view"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:src = "@drawable/demo_img_4" />
<LinearLayout
android:id = "@+id/transp_ll"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "#30000000"
android:gravity = "center">
<ImageView
android:id = "@+id/delete_btn"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:src = "@drawable/ic_delete_black_24dp" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//initialize views
setContentView(R.layout.activity_main);
image_view = findViewById(R.id.image_view);
delete_btn = findViewById(R.id.delete_btn);
transp_ll = findViewById(R.id.transp_ll);
//set transparent layout visibility gone
transp_ll.setVisibility(View.GONE);
//set click listener
image_view.setOnClickListener(this);
delete_btn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.delete_btn:
//write here delete button click functionality..
transp_ll.setVisibility(View.GONE);
break;
case R.id.image_view:
transp_ll.setVisibility(View.VISIBLE);
break;
}
}
Это кажется хорошим решением. но проверьте, что в xml нет идентификатора transp_ll, image_view and delete_btn. Пожалуйста, обновите решение
Попробуйте использовать гравитацию с растровое изображение XML, чтобы рисование не заполнило представление.