自定义微调器对齐和宽度的问题

时间:2012-03-06 12:28:55

标签: android android-layout android-widget android-spinner

我使用自己的ProjectSpinnerAdapter创建了一个自定义微调器。我还有另一个类,它只是膨胀布局但还没有实现,所以仍然使用标准的微调器。

我似乎无法使自定义微调器以与标准微调器相同的方式对齐。

当项目的长度比表格单元格宽时,我也遇到问题,如下所示。如果超过一定长度,是否有办法截断选项? - 这似乎不是解决这个问题的正确方法,但我不能直接设置小部件的宽度,因为这是通过表格布局控制的。*

**已修复,请参阅更新*

截图

screenshot screenshot 2

标准微调器与它旁边的Button完美对齐(它们都包含在同一个TableRow中)

布局

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1" >

<TableRow>

    <Button
        android:id="@+id/selectButton"
        android:text="@string/show" />

    <Spinner android:id="@+id/projectSpinner" />
</TableRow>

spinner_list_item.xml(使用maxLength)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/title_text_view"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:maxLength="15"
          android:gravity="center"/>


</LinearLayout>

更新

问题是微调器项目的布局,在我的自定义布局spinner_list_item.xml中我指定了一个布局我需要的是textview

spinner_list_item.xml(使用maxLength)

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/title_text_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:maxLength="15" />

1 个答案:

答案 0 :(得分:1)

如果我问,为什么选择TableLayout?我认为使用RelativeLayoutlayout_toRightOf layout_below等可以实现同样的效果。或者LinearLayout每个孩子都有weightSumgravity拥有layout_weight

我不打算给你一个改变你的整个布局的解决方案;),但我测试了这个,这似乎对我有用。

<TableRow>

    <Button
        android:id="@+id/selectButton"
        android:maxLength="10"
        android:text="sdadadasdfffffffffffffffffffffffff"/>

    <Spinner
        android:id="@+id/projectSpinner"
        android:ellipsize="end"
        android:lines="1"
        android:scrollHorizontally="true" />
</TableRow>

希望这有效,而且比设置固定的字符串长度更好

修改

我不确定你为什么要按照自己的方式填充微调器,但你可以尝试:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/title_text_view"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_centerInParent="true"
          android:maxLength="15"/>


</RelativeLayout>

android:gravity也是错误的,需要android:layout_gravity(但那只是LinearLayout

上次修改:D

尝试使用默认布局

view = vi.inflate(android.R.layout.spinner_list_item, null);

然后

((TextView) view.findViewById(R.id.text1)).setText(title);