2015-01-31 3 views
-1

я использую LinearLayout и установить фон для моего макета, как это:сделать интерактивную область макета фонового изображения

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context=".MainActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/back"> 

и обратно изображения является: enter image description here

Как показан на фоновом изображении я дизайн некоторое место , и теперь я хочу сделать интерактивные области, что я могу сделать? Thnx

ответ

0

Это может быть, не отвечает на вопрос, но у меня есть предложение:

Почему вы не просто установить фон в синий цвет, а затем поместить кнопки в макет (может быть, вы должны думать о используя TableLayout вместо этого)?

0

Вы можете использовать windowManager для этого, но я думаю, что это лучше сделать, как сказал Танос.

//get the instance of WindowManager 
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
     WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       <WIDTH OF THE BUTTON>, 
       <HEIGHT OF THE BUTTON>, 
       WindowManager.LayoutParams.TYPE_APPLICATION_PANEL, 
       WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH| 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, 
       PixelFormat.TRANSPARENT); 
    //make sure (0;0) is in the top left corner 
     params.gravity = Gravity.TOP | Gravity.LEFT; 
    params.x = <POSITION X OF THE BUTTON> 
    params.y = <POSITION Y OF THE BUTTON> 
//make an empty layout so you can get the click event 
RelativeLayout layout = new RelativeLayout(this/*or your context here*/); 
layout.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       //do stuff 
      } 
     }); 
windowManager.addView(layout, params); 

, если вы хотите, чтобы увидеть форму интерактивной области вы можете добавить вид, которые соответствуют его размеру родителя в макете

Смежные вопросы