【问题标题】:Android Scroll to bottom smoothlyAndroid 平滑滚动到底部
【发布时间】:2014-01-21 16:51:39
【问题描述】:

我正在尝试以编程方式向我的 ScrollView 添加一些视图。这是我要添加的 xml 视图代码。这是写在水平线性布局中

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:padding="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:text="1. Sadlier ofxord "
                android:textColor="@color/text_color"
                android:textSize="16sp" />

            <ImageButton
                android:contentDescription="@string/hello_world"
                android:layout_alignParentRight="true"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_centerVertical="true"
                android:background="@drawable/delete_button"
                android:src="@drawable/delete_icon" />



        </RelativeLayout>
        <View 
            android:layout_width="fill_parent"
            android:layout_height = "2dp"
            android:background="@color/text_color"/>

这些函数创建视图

private RelativeLayout createContainerLayout(){
    RelativeLayout layout = new RelativeLayout(getApplicationContext());
    layout.setPadding(10, 10, 10, 10);
    RelativeLayout.LayoutParams params = new        RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 70);
    layout.setLayoutParams(params);
    return layout;
}

private ImageButton createDeleteImageButton (){
    ImageButton button = new ImageButton(getApplicationContext());
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(50, 50);
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    params.addRule(RelativeLayout.CENTER_VERTICAL);
    button.setLayoutParams(params);
    button.setBackgroundResource(R.drawable.delete_button);
    button.setImageResource(R.drawable.delete_icon);
    return button;
}

private TextView  createSetNameText(int counter , String name){
    TextView text = new TextView(getApplicationContext());
    text.setText(counter+". "+name);
    text.setTextSize(16);
    text.setTextColor(getResources().getColor(R.color.text_color));
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    params.addRule(RelativeLayout.CENTER_VERTICAL);
    return text;
}

private View createLineView(){
    View line = new View (getApplicationContext());
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT , 2);
    line.setLayoutParams(params);
    line.setBackgroundColor(getResources().getColor(R.color.text_color));
    return line;
}

这就是我将视图添加到 ScrollView 的方式

lLayoutContainer.addView(rLayout);
rLayout.addView(setName);
rLayout.addView(deleteButton);
lLayoutContainer.addView(line);

但我最终得到了这样的东西。第一行是由 XML 创建的行,接下来的两行是通过程序创建的。那么我的代码有什么问题?为什么它会创建一个高度较小的布局

【问题讨论】:

    标签: android xml android-layout view


    【解决方案1】:

    对于setPaddingLayoutParams 构造函数,您都在传递显式的大小值。这将是绝对像素大小,与屏幕密度无关。

    请查看getDimensionPixelOffsetgetDimensionPixelSize。例如:

    private RelativeLayout createContainerLayout(){
        final Resources r = getResources();
        final int tenDp = r.getDimensionPixelSize(R.dimens.my_padding);
        RelativeLayout layout = new RelativeLayout(getApplicationContext());
        layout.setPadding(tenDp, tenDp, tenDp, tenDp);
    
        final int seventyDp = r.getDimensionPixelSize(R.dimens.my_height);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, seventyDp);
        layout.setLayoutParams(params);
        return layout;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2017-01-01
      • 2019-09-19
      • 2018-02-27
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      相关资源
      最近更新 更多