以编程方式从适配器创建视图时无法居中文本

时间:2017-08-14 05:12:43

标签: android gridview textview imageview

我正在使用适配器为每个项目生成一个视图。视图需要在其下方显示带有居中文本的图像。我创建一个线性布局并添加图像视图和文本视图。

要显示问题,我已将背景颜色更改为绿色表示线性布局,红色表示文本视图...

enter image description here

显然,文字显示左对齐而不是居中。以下是适配器GetView方法中的简单代码...

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        ImageView imageView = new ImageView(_context);
        LinearLayout.LayoutParams imageViewParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent);
        imageView.LayoutParameters = imageViewParam;
        imageView.Id = 1000 + position;
        imageView.SetImageResource(Resource.Drawable.Code);

        TextView textView = new TextView(_context);
        LinearLayout.LayoutParams textViewParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent);
        textView.LayoutParameters = textViewParam;
        textView.Text = OPTIONS_TEXT[position];
        textView.SetBackgroundColor(Color.Red);
        textView.SetForegroundGravity(GravityFlags.CenterHorizontal);

        LinearLayout linear = new LinearLayout(_context);
        linear.LayoutParameters = new GridView.LayoutParams(200, 172);
        linear.SetBackgroundColor(Color.Green);
        linear.Orientation = Orientation.Vertical;
        linear.AddView(imageView);
        linear.AddView(textView);

        return linear;
    }

据我所知,在以编程方式生成视图时无法设置 layout_gravity 设置,因此我尝试设置前景重力但完全没有效果。

我已经尝试了所有我能想到的东西,但没有任何东西让文本居中!

1 个答案:

答案 0 :(得分:1)

将重心设置为TextView的LinearLayout.LayoutParams,即

 textViewParam.gravity = Gravity.CENTER;