Атрибуты макета в коде XML, которые игнорируются при использовании метода addView

Я корейский, изображение под используется корейский язык. Ну.. Этот факт не важен. Я попытался добавить пользовательский вид, в линейном макете, и он будет в линейном макете успешно. Но это не по центру по горизонтали. Я определенно установил гравитацию центра линейного расположения по горизонтали. Но это не работа. Я предполагаю, что причиной проблемы являются параметры макета. Пользовательский класс просмотра не имеет проблем, и не появилось никаких ошибок при отладке. Как мне это сделать??

Активность в XML-коде:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:ignore="NestedScrolling">
    <LinearLayout
        android:id="@+id/select_body"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="30dp"
        android:gravity="center_horizontal"
        android:orientation="vertical">
        <!--Here is-->
    </LinearLayout>
</ScrollView>

Метод AddView:

ThemeManager mTheme;

Button selectTopBoardButton;

LinearLayout selectBody;

ThemeView c0001;
ThemeView c0002;
ThemeView c0003;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_select);

    gestureDetectorCompat = new GestureDetectorCompat(this, new MainActivityGoer());

    NetworkDetector networkDetector = new NetworkDetector(this);
    if (!networkDetector.isConnected()) {
        Toast.makeText(SelectActivity.this, "네트워크에 접속할 수 없습니다.", Toast.LENGTH_SHORT).show();
    }

    selectTopBoardButton = (Button) findViewById(R.id.select_top_board_button);
    selectBody = (LinearLayout) findViewById(R.id.select_body);

    mTheme = new ThemeManager(this);
    c0001 = mTheme.getThemeView("c0001");
    c0002 = mTheme.getThemeView("c0002");
    c0003 = mTheme.getThemeView("c0003");

    selectTopBoardButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String url = getResources().getString(R.string.main_request_btn06_url);
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
        }
    });

    selectBody.addView(c0001);
}

2 ответа

Решение

Я думаю, что ваше подпредставление layout_width="match_parent", пожалуйста, попробуйте этот код

c0001.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

selectBody.addView(c0001); 

Попробуйте установить гравитацию для пользовательских видов, как это

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
c0001.setLayoutParams(params); //your custom ThemeView
Другие вопросы по тегам