gpt4 book ai didi

android - textview 何时在 android 中的数组适配器内获取宽度?

转载 作者:行者123 更新时间:2023-11-30 02:34:33 26 4
gpt4 key购买 nike

我有一个由自定义数组适配器填充的 ListView。我使用 holder 设计模式为每行内的 TextView 分配值。

我想在自定义 ArrayAdapter 中以编程方式设置 TextView 的边距。此 margin(left) 是使用 TextView 的宽度计算的。

但不知何故,textview 上的 getWidth() 方法返回 0

这是我的代码:

public class BudgetAdapter extends ArrayAdapter<Budget> {

private Context context;
private int layoutResourceId;
private List<Budget> data = null;

public BudgetAdapter(Context context, int layoutResourceId, List<Budget> data) {
super(context, layoutResourceId, data);
this.context = context;
this.layoutResourceId = layoutResourceId;
this.data = data;
}



@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
BudgetHolder holder = null;

if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);

holder = new BudgetHolder();
holder.titleText = (TextView)row.findViewById(R.id.budget_list_item_title_label);
holder.remainingText = (TextView)row.findViewById(R.id.budget_list_item_remaining_label);
holder.remainingBar = (RemainingBar)row.findViewById(R.id.budget_list_item_remaining_bar);
row.setTag(holder);
}
else
{
holder = (BudgetHolder)row.getTag();
}

Budget budget = data.get(position);
holder.titleText.setText(budget.getShortDescription());
holder.remainingText.setText(budget.getRemainingAsString());
holder.remainingBar.setRemaining(budget.getRemaining());
holder.remainingBar.setTotal(budget.getTotal());

Log.i("Main", "The width of the TextView is: " + holder.remainingText.getWidth());
return row;
}


static class BudgetHolder {
TextView titleText;
TextView remainingText;
RemainingBar remainingBar;
}
}

所以我的问题是 TextView 何时获得宽度?

最佳答案

when does the TextView get a width?

如果 View 类是动态生成的(通过代码),它们将在显示在屏幕上后获得它们的宽度。

你的情况怎么样?

对不起,我不知道。希望有人能帮助我们:)

但我可能会帮助您编写代码。尝试改变:

holder.remainingText.getWidth());

像这样:

holder.remainingText.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
holder.remainingText.getLayoutParams().width;
holder.remainingText.getLayoutParams().height;

你应该得到文本的宽度和高度。

关于android - textview 何时在 android 中的数组适配器内获取宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26784019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com