我试图像这样在ListView中显示项目:
a. Name1
80.33 ====== 60%
b. Name2
101.22 ======= 70%
c. Name3
55.22 === 30%
d. Name4
140.11 ========== 100%
"图表"应该是纯色线,但100%的整个宽度需要在那里,它应该占据可用的整个宽度,除了最左边的值和最右边的百分比。此外,相对于集合中的最低值,百分比是更高的百分位数!
无论如何,我已经尝试了一个带有ProgressBar的FrameLayout,这似乎不适合这个加上我无法按照我想要的方式进行布局。我正在思考一张1px的彩色图像,我将所需的百分比拉伸,然后在剩下的时间内拉出1px的暗图像。
有什么想法吗?谢谢!
编辑: 好的进展但是一个新的问题:
这是我在布局中所做的:
<View
android:id="@+id/pr_bar_1"
android:layout_width="30dip"
android:layout_height="4dip"
android:layout_gravity="center_vertical"
android:background="#ffffff" />
<View
android:id="@+id/pr_bar_2"
android:layout_width="70dip"
android:layout_height="4dip"
android:layout_gravity="center_vertical"
android:background="#333333" />
看起来完全像我想要的!但是......我似乎无法动态设置宽度。 View类没有setLayoutWidth(int dip)
方法。如果我能得到那个,那么我就完蛋了。有任何想法吗?谢谢!
答案 0 :(得分:1)
据我了解,您需要显示暗线以获得得分百分比。如果我错了,请纠正。为此你可以试试这个: -
您可以在1个水平 LinearLayout Parent下使用2 LinearLayout 。将父布局的 Weightsum 设置为100.第一个LinearLayout左边是暗图像,第二个是光图像。然后根据百分比设置左孩子的体重,并将剩余百分比设为右 LinearLayout
回答您的编辑问题:
LayoutParams
params=view_instan.getLayoutParams();
params.width=yourWidth;
view_instan.setLayoutParams(params);
答案 1 :(得分:0)
如果您想要自定义内容,请编写自己的视图并覆盖onDraw以完全按照您的意愿进行操作。
答案 2 :(得分:0)
使用view.setLayoutParams(params)对我不起作用,我不得不将代码放在可运行的内部。
xml:
<LinearLayout
android:id="@+id/ll_parent"
android:layout_width="match_parent"
android:layout_height="6dp"
android:baselineAligned="false"
android:orientation="horizontal"
android:background="@color/white"
android:paddingStart="1dp"
android:paddingEnd="1dp">
<LinearLayout
android:id="@+id/pr_bar_1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="0"
android:layout_gravity="center_vertical"
android:background="@color/blue">
</LinearLayout>
<LinearLayout
android:id="@+id/pr_bar_2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="0"
android:layout_gravity="center_vertical"
android:background="@color/white">
</LinearLayout>
</LinearLayout>
java:
final int percentage = my_percentage;
llParent.post(new Runnable() {
@Override
public void run() {
int fullWidth = llParent.getWidth();
prBar2.getLayoutParams().width = Math.round(fullWidth*((1 - ((float) (percentage/100)))));
prBar2.requestLayout();
prBar1.getLayoutParams().width = Math.round(fullWidth*((float) (percentage/100)));
prBar1.requestLayout();
}
});