3

我对 Android 很陌生。我正在创建一个包含可点击文本的应用程序。所有可点击的文本都存在于一个数组中,然后与 a 相关联ListView并显示在 RelativeLayout 中。

它的代码是 -

    this.setListAdapter(new ArrayAdapter<String>(this, R.layout.main, R.id.label, contact_name));
    ListView lv = getListView();

main 是相对布局,label 是布局内的文本框 id,contact_name 是作为可点击文本的数组。这一切都很好。

最后,当数组非常大时,线性布局变得可滚动。

现在我想将此列表占用的区域限制为总屏幕高度的 80% 或 90%,并在底部保留空间用于打开新页面/视图的按钮。在相对布局中包含按钮是为列表中的每个项目添加一个按钮。改变相对布局的高度就是改变列表中每个项目的高度。这得出结论,数组中的每个项目都与整个相对布局相关联,并且相对布局数组用于显示所有项目。现在如何通过将相对布局列表限制为从顶部到屏幕的 80% 来在底部放置一个按钮。

这是当前 XML 文件的样子

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

    <Button
        android:id="@+id/btn"
        android:layout_alignParentBottom="true" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="Next"
        />

    <ScrollView
        android:id="@+id/scroll"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:layout_above="@id/btn">

        <TextView
            android:id="@+id/label"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            android:padding="10dip"
            android:textSize="16sp"
            android:textStyle="bold" >
        </TextView>
    </ScrollView>
</RelativeLayout>

代码结束

输出是一组 Next 按钮,其中隐藏了实际内容。

这是我的 Java 代码

// Make the contact number parameter accessible to member functions of List View
        final String[] f_contact_number = contact_number;

        // Binding Array to ListAdapter
        this.setListAdapter(new ArrayAdapter<String>(this, R.layout.main, R.id.label, contact_name));

        ListView lv = getListView();

        // listening to single list item on click
        lv.setOnItemClickListener(new OnItemClickListener() {
          public void onItemClick(AdapterView<?> parent, View view,
              int position, long id) {

              Intent intent = new Intent(Intent.ACTION_CALL);
              intent.setData(Uri.parse(f_contact_number[position]));
              startActivity(intent);

          }
        });

Contact_number 和contact_names 是两个字符串数组,在点击contact_name 时调用一个号码

Thanks
4

4 回答 4

3

我认为你应该这样做:

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

    <Button
        android:id="@+id/btn"
        android:layout_alignParentBottom="true" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="Next"
        />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:layout_above="@id/btn">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            android:text="Scroll view content"
            >
        </TextView>
    </ScrollView>
</RelativeLayout>

所以按钮将粘在父级的底部,剩余空间将被ScrollView 希望这有帮助。

于 2013-07-04T11:07:02.687 回答
2

这更容易使用RelativeLayout. 如果要使用 来执行此操作LinearLayout,可以将视图的layout_height设置为0dp并使用layout_weight分配高度

于 2013-07-04T11:02:33.547 回答
1
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >

  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/yourbtnid"
    android:scrollbars="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="your text" >
    </TextView>
  </ScrollView>

  <Button
    android:id="@+id/yourbtnid"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_gravity="center_vertical"
    android:text="Button" />

</RelativeLayout>
于 2013-07-05T05:01:38.983 回答
0

我按照 Anamika 的建议做了,效果很好。

我稍微更改了一个代码,所以按钮设置在中间,而不是填满所有空间。

也许您的问题出在 java 代码中,而不是在布局代码中。

你让它工作了吗?

如果您仍然在苦苦挣扎,请告诉我,我已经查看并帮助您解决。

于 2014-04-18T18:57:26.220 回答