2016-06-30 3 views
0

Управление сенсорного События в целом ViewGroupУправление сенсорного События всего ViewGroup, даже с детьми (пуговицы и т.д.)

Здесь Activity.java код

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final TextView textView = (TextView)findViewById(R.id.textView); 
    // this is the view on which you will listen for touch events 
    final View touchView = findViewById(R.id.ll); 
    touchView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      textView.setText("Touch coordinates : " + String.valueOf(event.getX()) + "x" + String.valueOf(event.getY())); 
      return true; 
     } 
    }); 
} 

макет/activity_main.xml - код макета

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@+id/ll" 
android:orientation="vertical"> 

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="New Button" 
    android:id="@+id/button" 
    android:layout_weight="0.50" /> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="New Text" 
    android:id="@+id/textView2" 
    android:layout_weight="0.50" /> 

<TextView 
    android:id="@+id/textView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Hello World, TestActivity" /> 
</LinearLayout> 

Как управлять событиями касания (в данном случае показывать координаты) на кнопке @+id/button также?

ответ

-2
public class MainActivity extends AppCompatActivity implements View.OnTouchListener { 
    Button btn; 
    TextView textView; 
    View touchView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn = (Button) findViewById(R.id.button); 
     btn.setOnTouchListener(this); 
     textView = (TextView) findViewById(R.id.textView); 
     touchView = (View) findViewById(R.id.ll); 
     touchView.setOnTouchListener(this); 
    } 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 
     textView.setText("Touch coordinates : " + String.valueOf(event.getX()) + "x" + String.valueOf(event.getY())); 
     return true; 
    } 
} 
+0

Да, это вариант - но установить слушателей на все дочерние представления (и т. Д. Создавать больше объектов без реальных потребностей) - это ненормально для меня. Сожалею. Я не принимаю ваш ответ. Если количество детей составляет 50, ваш совет будет - настроить 50 слушателей? – Andreyua