Android:布局的重力参数没有显示任何效果

时间:2014-08-29 06:45:32

标签: android android-layout android-adapter

我用来实现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>

这个问题的任何可能的解决方案?

2 个答案:

答案 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" />