Android-以编程方式更改搜索栏的位置和大小

时间:2019-07-08 12:56:57

标签: android seekbar layoutparams

我在ImageView的正下方有一个搜索栏,我希望该搜索栏位于图像的正下方, 并设为视图中图像的长度,拇指位于条形图本身的中间位置

我的xml中具有以下布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1"
>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frlayout"
    android:layout_weight="0.82"
    android:layout_width="match_parent"
        android:layout_height="0dp">
            <ImageView
            android:id="@+id/imageView"
                android:background="@android:color/transparent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
             />
    </FrameLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.07"
    android:orientation="horizontal"
    android:layout_gravity="center"
    android:id="@+id/seekbarView">
<SeekBar
    android:id="@+id/seekBar"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="0.07"
    android:progress="1000"
    android:max="2000"
    android:layout_gravity="center"
    />
</LinearLayout>

(其余省略)

我考虑过将填充物置于搜索栏的左侧以使其居中,并使用LayoutParams调整搜索栏本身的大小:

         int lefthandside = (findViewById(R.id.seekbarView).getMeasuredWidth() - img2.getWidth())/2;

        // img2 is the image that is loaded into the imageview
        // We get the leftpadding by finding the total width of the layout, subtracting the width of the image
        // and then dividing by two - this tells us the surplus space on either side

                LayoutParams lp = new LayoutParams(img2.getWidth(), LinearLayout.LayoutParams.MATCH_PARENT);
                simpleSeekBar.setLayoutParams( lp );

    // This should hopefully resize the seekbar - the width should be the same as the width of img2
    // and the height should be the same as the LinearLayout "container"

                simpleSeekBar.setPadding(lefthandside, 0,0,0);

从随附的相关区域的屏幕截图中可以看到,这只是部分成功,但是缺少大多数搜索栏“轨道”,因此我无法移动拇指。

在我看来,seekbar的大小已正确调整,但我们只看到它的尾部(右手侧)端,它没有居中,但我仍然靠着屏幕左侧平齐。出于某些原因,拇指左侧的大部分搜索栏现在都已隐藏。

我不能做的一件事就是从搜索栏中删除linearlayout“容器”-我已经尝试过了,尽管它可以使搜索栏居中,但对其余的布局却有不利影响。

我也尝试过删除layout_gravity属性,但没有成功。

screenshot of relevant portion

0 个答案:

没有答案