Прошу немного снисходительности, я только начинаю с руководств по Android SDK и пытаюсь из интереса сделать что-то, чего нет в самом руководстве, но я надеюсь, что все будет легко.
Я пытаюсь центрировать TextView
элемент с помощью кода по горизонтали и вертикали (я могу сделать это в XML отлично). Я видел несколько примеров того, как это сделать, когда родитель - это таблица или какой-то другой объект, но я надеюсь, что мне будет легче это понять. (ps Не стесняйтесь поправлять мою терминологию).
Вот пример кода из учебника / моей рабочей модели:
package com.example.myfirstapp;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;
public class DisplayMessageActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
textView.setGravity(View.TEXT_ALIGNMENT_GRAVITY);
setContentView(textView);
}
}
Мне удалось найти setGravity
метод, и я попытался поработать с setLayoutParams
ним, но я не уверен, какова его область действия, так как я не могу найти то, что мне нужно импортировать, чтобы WRAP_CONTENT
константа разрешилась . Насколько я понял, центрирование и content_wrapping + gravity - это две разные вещи. Мне нужен пример того, как сделать и то, и другое в этом случае, и, возможно, как / где я нашел бы ответ в документации API?
Ответы:
yourTextView.setGravity(Gravity.CENTER);
источник
android:textAlignment="gravity"
атрибут установлен на гравитацию. В противном случае textAlignment переопределяет.yourTextView.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY);
Для динамического центра
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
источник
TextView text = new TextView(this); text.setGravity(Gravity.CENTER);
а также
text.setGravity(Gravity.TOP);
а также
text.setGravity(Gravity.BOTTOM);
а также
text.setGravity(Gravity.LEFT);
а также
text.setGravity(Gravity.RIGHT);
а также
text.setGravity(Gravity.CENTER_VERTICAL);
а также
text.setGravity(Gravity.CENTER_HORIZONTAL);
И многое другое также доступно
источник
это наверняка сработает ..
RelativeLayout layout = new RelativeLayout(R.layout.your_layour); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.CENTER_IN_PARENT); params.addRule(LinearLayout.CENTER_IN_PARENT); textView.setLayoutParams(params); textView.setGravity(Gravity.CENTER); layout.addView(textView); setcontentView(layout);
источник
Попробуйте добавить следующий код для применения параметров макета к TextView
LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.addRule(LinearLayout.CENTER_IN_PARENT); textView.setLayoutParams(lp);
источник
если у вас небольшой размер текста, вы должны сделать ширину вашего текстового представления равной fill_parent. После этого вы можете установить TextView Gravity в центр:
TextView textView = new TextView(this); textView.setText(message); textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); textView.setGravity(Gravity.CENTER);
источник
Вы можете использовать следующее для программного центрирования
TextView
текста в Kotlin:textview.gravity = Gravity.CENTER
источник
попробуйте этот метод
public void centerTextView(LinearLayout linearLayout) { TextView textView = new TextView(context); textView.setText(context.getString(R.string.no_records)); textView.setTypeface(Typeface.DEFAULT_BOLD); textView.setGravity(Gravity.CENTER); textView.setTextSize(18.0f); textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); linearLayout.addView(textView); }
источник
Эти двое должны работать вместе, чтобы это работало. Какое-то время чесал в затылке.
numberView.textAlignment = View.TEXT_ALIGNMENT_CENTER numberView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
источник