我用来实现CustomAdapter来填充listview数据。对于每个项目,我试图自定义textview的layoutparams。但layoutparams.gravity在我的代码中不起作用。以下是我正在使用的代码片段
public View getView(int position, View convertView, ViewGroup parent) {
User user= getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_user, parent, false);
}
TextView tvName = (TextView) convertView.findViewById(R.id.userName);
tvName.setLayoutParams(getLayoutParams());
tvName.setText(getStringFromXmlByName(user.getTitle()));
tvName.setGravity(Gravity.CENTER_HORIZONTAL);
tvName.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.background));
return convertView;
}
private LayoutParams getLayoutParams() {
LayoutParams layoutParams = new LayoutParams(convertDpIntoPixels(300),
LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.gravity = Gravity.RIGHT;
return layoutParams;
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp" >
<TextView
android:id="@+id/userName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
这个问题的任何可能的解决方案?
答案 0 :(得分:1)
Gravity 指定如何在其中 中布置视图的内容。
布局重力指定如何在其父 中 布置视图。
您的代码所做的是将TextView中的文本设置为中心,水平放置在包含其自己内容的TextView中。所以基本上没有任何重力可以做,因为TextView的边界完全拥抱文本。
我怀疑你要做的是将TextView置于父级中心。为此,您需要将父上的重力设置为center_horizontal
或设置 TextView的 layout_gravity 到center_horizontal
。
答案 1 :(得分:0)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:padding="10dp" >
<TextView
android:id="@+id/userName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:paddingLeft="10dp"
android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceLarge" />