Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio:以编程方式实例化水平线性布局不起作用_Java_Android_Android Layout_Dynamic_Android Linearlayout - Fatal编程技术网

Java Android Studio:以编程方式实例化水平线性布局不起作用

Java Android Studio:以编程方式实例化水平线性布局不起作用,java,android,android-layout,dynamic,android-linearlayout,Java,Android,Android Layout,Dynamic,Android Linearlayout,终于找到了一个解决方法:我决定只使用一行表,然后将stretchAllColumns设置为true。这意味着它只是模仿了一个水平布局和展开视图 我试图在运行时实例化一个水平线性布局,我希望布局中的元素沿着布局的整个宽度展开。我也希望一切都是中心垂直对齐。这是我目前得到的: LinearLayout tertiaryLinearLayout = new LinearLayout(getActivity()); tertiaryLinearLayout.setLayoutParams(new Lin

终于找到了一个解决方法:我决定只使用一行表,然后将stretchAllColumns设置为true。这意味着它只是模仿了一个水平布局和展开视图

我试图在运行时实例化一个水平线性布局,我希望布局中的元素沿着布局的整个宽度展开。我也希望一切都是中心垂直对齐。这是我目前得到的:

LinearLayout tertiaryLinearLayout = new LinearLayout(getActivity());
tertiaryLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
tertiaryLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
tertiaryLinearLayout.setGravity(Gravity.FILL_HORIZONTAL);
这将实例化布局,但其中的元素无法正确填充布局的整个宽度。我也不知道如何在不将“设置重力”更改为“设置重力”的情况下使它们保持中心垂直对齐

tertiaryLinearLayout.setGravity(Gravity.CENTER_VERTICAL);
此文本视图是我添加到布局中的五个元素之一:

TextView dash = new TextView(getActivity());
dash.setText("-");
其中两个元素是ImageView,另外三个是TextView。以下是它当前的外观:

编辑:
整体结构是一个具有垂直线性布局的全景图。此线性布局包含许多其他垂直线性布局,每个都有一个水平线性布局。希望这是有意义的。
tertiaryLinearLayout
的父视图如下:

LinearLayout secondaryLinearLayout = new LinearLayout(getActivity());
secondaryLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
secondaryLinearLayout.setOrientation(LinearLayout.VERTICAL);
...
secondaryLinearLayout.addView(tertiaryLinearLayout);
编辑2: 这是我的全部代码:

...
final LinearLayout linearLayout = root.findViewById(R.id.leagueLinearLayout);

List<Game> currentYearCategory = MainActivity.yearCategories.get(0);
for (int i = 0; i < currentYearCategory.size(); i++) {
    TextView textView = new TextView(getActivity());
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
    textView.setLayoutParams(params);
    textView.setText(currentYearCategory.get(i).date);
    linearLayout.addView(textView);
}
seekBarChange(linearLayout, root, 0);

// Set up seek bar
SeekBar yearSeekBar = root.findViewById(R.id.yearSeekBar);
yearSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        seekBarChange(linearLayout, root, progress);
    }

...
...

private void seekBarChange(LinearLayout linearLayout, View root, int progress){
    TextView yearTextView = root.findViewById(R.id.yearTextView);
    String newText = (1890 + progress * 10) + " - " + (1899 + progress * 10);
    yearTextView.setText(newText);

    final List<Game> currentYearCategory = MainActivity.yearCategories.get(progress);

    linearLayout.removeAllViews();
    for (int i = 0; i < currentYearCategory.size(); i++) {
        // Create views
        LinearLayout secondaryLinearLayout = new LinearLayout(getActivity());
        secondaryLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
        secondaryLinearLayout.setOrientation(LinearLayout.VERTICAL);

        View separatorView = new View(getActivity());
        separatorView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 50));

        TextView date = new TextView(getActivity());
        date.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        date.setText(currentYearCategory.get(i).date);

        LinearLayout tertiaryLinearLayout = new LinearLayout(getActivity());
        tertiaryLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
        tertiaryLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
        tertiaryLinearLayout.setGravity(Gravity.CENTER_VERTICAL);

        ImageView homeImage = new ImageView(getActivity());
        homeImage.setLayoutParams(new ViewGroup.LayoutParams(150, 150));
        if (currentYearCategory.get(i).celticIsHome){
            homeImage.setBackgroundResource(R.drawable.celtic_logo);
        } else {
            homeImage.setBackgroundResource(R.drawable.rangers_logo);
        }

        TextView homeScore = new TextView(getActivity());
        homeScore.setText(currentYearCategory.get(i).fullTimeScore.substring(0, 1));

        TextView dash = new TextView(getActivity());
        dash.setText("-");

        TextView awayScore = new TextView(getActivity());
        awayScore.setText(currentYearCategory.get(i).fullTimeScore.substring(2));

        ImageView awayImage = new ImageView(getActivity());
        awayImage.setLayoutParams(new ViewGroup.LayoutParams(150, 150));
        if (currentYearCategory.get(i).celticIsHome){
            awayImage.setBackgroundResource(R.drawable.rangers_logo);
        } else {
            awayImage.setBackgroundResource(R.drawable.celtic_logo);
        }

        // Add views
        tertiaryLinearLayout.addView(homeImage);
        tertiaryLinearLayout.addView(homeScore);
        tertiaryLinearLayout.addView(dash);
        tertiaryLinearLayout.addView(awayScore);
        tertiaryLinearLayout.addView(awayImage);

        secondaryLinearLayout.addView(separatorView);
        secondaryLinearLayout.addView(date);
        secondaryLinearLayout.addView(tertiaryLinearLayout);

        final int gameNum = i;
        secondaryLinearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openGameActivity(currentYearCategory, gameNum);
            }
        });
        linearLayout.addView(secondaryLinearLayout);
    }
}
。。。
最终LinearLayout LinearLayout=root.findViewById(R.id.leagueLinearLayout);
List currentYearCategory=MainActivity.yearCategories.get(0);
对于(int i=0;i

任何帮助都将不胜感激,谢谢!

我猜将添加
三元线性布局的
父视图是
包装内容
布局宽度
。尝试使其宽度
匹配父视图
。您应该在2:52查看我猜
父视图
查看将添加到
布局宽度
的is
包装内容
三元线性布局
视图