Как я могу ссылаться на текстовое представление, созданное с помощью кода? - PullRequest
1 голос
/ 03 февраля 2020
public TextView descriptionTextView(Context context, String text) {
        final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        final TextView textView = new EditText(context);
        textView.setLayoutParams(lparams);
        textView.setTextSize(10);
        textView.setTextColor(Color.rgb(0,0,0));
        textView.setText(" " + text + "");
        textView.setMaxEms(8);
        textView.setKeyListener(null);
        textView.setFocusableInTouchMode(false);
        textView.setEnabled(false);
        return textView;
    }

Вот код, который я написал для TextView. Я хотел бы сослаться на это из других классов или внутри того же класса, но я не могу найти способ определить это; как я хотел бы изменить значение на основе ввода.

Ответы [ 3 ]

1 голос
/ 03 февраля 2020

Дайте TextView идентификатор, а затем получите доступ к textView с помощью идентификатора, как показано ниже -

укажите идентификатор как textView.setId(1);

public TextView descriptionTextView(Context context, String text) {
        final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        final TextView textView = new EditText(context);
        textView.setLayoutParams(lparams);
        textView.setTextSize(10);
        textView.setId(1);
        textView.setTextColor(Color.rgb(0,0,0));
        textView.setText(" " + text + "");
        textView.setMaxEms(8);
        textView.setKeyListener(null);
        textView.setFocusableInTouchMode(false);
        textView.setEnabled(false);
        return textView;
    }

, скажем, ваш макет для textView - LinearLayout.

Вы можете получить textView по идентификатору, используя следующий код -

TextView tv = (TextView)view.findViewById(1); // view is LinearLayout object

Надеюсь, это поможет!

0 голосов
/ 03 февраля 2020

Создание других видов. XML Файл не является предпочтительным методом в Android. Лучший подход - создать этот TextView в XML файле и связать его, используя его идентификатор. вот так.

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView"
    />

Далее используйте это где-нибудь в своих классах и занятиях, создавая подобный объект.

 TextView textView = findViewById(R.id.textView);
    //to change value use this 
    textView.setText("Value you want to set");
    //to change its visibility
    textView.setVisibility(textView.GONE);
    //to get its string
    String value = textView.getText().toString();

Если этот метод бесполезен и вы все еще хотите создавать представления затем в файле Java сделайте их доступными c и вне границ функций, чтобы сделать их доступными везде.

0 голосов
/ 03 февраля 2020

Это код для динамического создания TextView

LinearLayout layout = findViewById(R.id.linearLayout);

TextView view = descriptionTextView(this, "Sample text");
layout.addView(view);

Ниже метод для вызова его из того же / другого класса:

public TextView descriptionTextView(Context context, String text){
    ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    final TextView textView = new TextView (context); //Change this to TextView
    textView.setLayoutParams(lparams);
    textView.setTextSize(10);
    textView.setTextColor(Color.rgb(0,0,0));
    textView.setText(" " + text + "");
    textView.setMaxEms(8);
    textView.setKeyListener(null);
    textView.setFocusableInTouchMode(false);
    textView.setEnabled(false);
    return textView;
}
...