Я создаю экран для компоновки для своего приложения. У меня есть ScrollView
, который содержит RelativeView
, который, в свою очередь, содержит две вещи: EditText
, где пользователь вводит сообщение, и ImageView
, чья видимость включена и выключается в зависимости от того, прикреплено ли изображение статусу или нет. Вот эта часть моего макета XML.Как вызвать onClick и onLongClick of EditText из RelativeLayout
<!-- @dimen/bigGap = 8dp -->
<ScrollView android:id="@+id/parentScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:layout_marginTop="@dimen/bigGap"
android:layout_marginRight="@dimen/bigGap"
android:layout_marginLeft="@dimen/bigGap"
android:layout_marginBottom="@dimen/bigGap"
android:layout_above="@+id/footer"
android:background="#006400"
> <!-- green background color -->
<RelativeLayout android:id="@+id/parentLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFD700"> <!-- yellow background color -->
<EditText android:id="@+id/postText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#dddddd"
android:inputType="textMultiLine"
android:gravity="top|left"
/> <!-- gray background color -->
<ImageView android:id="@+id/postImage"
android:layout_width="@dimen/thumbnailSize"
android:layout_height="@dimen/thumbnailSize"
android:visibility="gone"
android:layout_below="@id/postText"
/>
</RelativeLayout>
</ScrollView>
Поскольку высота моих EditText
«S является wrap_content
, все это начинается с одной линией серого фона (EditText
) на вершине желтого фона (RelativeLayout
, который полностью покрывает зеленый фон из ScrollView
). Тем не менее, я позже изменю все фоны представлений на белый (чтобы они выглядели как один компонент), и будет непротиворечиво для пользователя, чтобы он мог использовать только одну строку EditText
, чтобы заставить клавиатуру поп вверх.
То, что я хочу сделать, это перенаправить щелчок и длинный клик действия RelativeLayout
на клик и долго клик действия EditText
, но мой код ниже не работает. Помогите?
final EditText editText = (EditText) findViewById(R.id.postText);
RelativeLayout rl = (RelativeLayout) findViewById(R.id.parentLinearLayout);
rl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Logger.d("onClick invoked!");
editText.performClick();
}
});
rl.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Logger.d("onLongClick invoked!");
return editText.performLongClick();
}
});
Мое намерение здесь так, что когда RelativeLayout
нажата, клавиатура всплывает (как это делает, когда сделано с EditText
), и когда долго нажата, отобразить параметры вырезать/копировать/вставить/выбор текста (такое же поведение с EditText
).