Динамическое создание TextViews в приложениях для Android - PullRequest
0 голосов
/ 17 декабря 2018

Я экспериментирую с созданием приложений для Android с использованием карт и надеюсь создать textView, который появится, когда пользователь нажмет на маркер.Единственным критерием является то, что представление должно быть прокручиваемым (часть текста может быть довольно длинным) и легко доступным для пользователя - либо смахиванием, либо другим методом.

Я пробовал следующее:

 @Override
 public boolean onMarkerClick(final Marker marker) {

  TextView tv = new TextView(this);
  tv.setText(marker.getTag().toString());
 }

Я не ожидал, что что-то так просто сработает, и этого не произошло.Дальнейшие исследования показывают, что мне может понадобиться поместить TextView в мой XML-файл макета, но я не хочу этого делать, поскольку моя конфигурация более или менее задана.

FWIW, это мой файл макета:

<?xml version="1.0" encoding="utf-8"?>
<!--
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Excursions" />
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<TextView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".05"
    android:background="#000000"
    android:text="Excursions"
    android:textColor="#ffffff"
    android:gravity="center"/>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".85"
    tools:context=".Excursions" />

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".10"
    android:background="#004D79"
    android:orientation="horizontal">

    <EditText
        android:id="@+id/addressText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="7dp"
        android:layout_weight="1"
        android:background="#FFFFFF"
        android:text="Enter address">
    </EditText>

    <Button
        android:id="@+id/findButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:padding="5dp"
        android:text="Find">
        </Button>
</LinearLayout>

РЕДАКТИРОВАТЬ: Просто чтобы уточнить, что я после.При нажатии на маркер должен появиться TextView, который покрывает весь экран, отображая текстовые данные;так как я не знаю, сколько текста будет отображаться, должны быть вертикальные полосы прокрутки.Каким-то образом должен быть способ отклонить новое текстовое представление, чтобы внешний вид приложения был восстановлен до того, каким он был до нажатия маркера.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

По моему мнению, вы должны добавить этот TextView в XML с атрибутом

android:visibility="gone"

и изменить этот метод:

@Override public boolean onMarkerClick(final Marker marker) { 
    TextView tv = findViewById(R.id.text);
    tv.setText(text);
    tv.setVisibility(View.VISIBLE); 
}
0 голосов
/ 17 декабря 2018

Вам необходимо установить параметры макета

tv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                                                 LinearLayout.LayoutParams.WRAP_CONTENT));

, а также добавить новый вид в родительский макет

parentLayout.addView(tv);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...