gpt4 book ai didi

android - 使布局可点击

转载 作者:行者123 更新时间:2023-11-30 02:37:16 25 4
gpt4 key购买 nike

在我的应用程序中,我有几个具有不同 ListView 的 fragment ,但对于所有 fragment 我想使用相同的空 View ,所以我创建了一个带有空 View 的单独布局并将其添加到其他布局使用

<include
android:id="@+id/empty"
layout="@layout/empty_view"/>

一切都按预期工作,但现在我试图使该 View 可点击,以便在用户点击空 View 时重新加载 ListView,但我无法使其工作。知道怎么做吗?

这是我目前尝试过的:

(空 View .xml)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:gravity="center">

<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="center"
android:src="@drawable/error_icon"/>

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#929292"
android:textSize="24sp"
android:text="@string/empty_list_error"/>

</LinearLayout>

fragment 列表.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true">

<Spinner
android:id="@+id/spinner_filter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/activity_vertical_margin"
android:layout_marginLeft="@dimen/activity_vertical_margin"
android:layout_gravity="center_horizontal"
android:visibility="gone"/>

<include
android:id="@+id/empty"
layout="@layout/empty_view"/>

<ProgressBar
android:id="@+id/loading_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:indeterminate="true"
style="@android:style/Widget.Holo.ProgressBar.Large"/>

<LinearLayout
android:id="@+id/list_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primary_color"
android:padding="@dimen/activity_vertical_margin"
android:layout_below="@id/spinner_filter"
android:visibility="gone">

<TextView
android:layout_width="0dp"
android:layout_weight="5"
android:layout_height="wrap_content"
android:textColor="@color/white_90pct"
android:textAllCaps="true"
android:text="@string/subject_indicator"/>

<View
android:layout_width="1dp"
android:layout_height="15dp"
android:layout_gravity="center_vertical"
android:background="@color/light_color"/>

<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:singleLine="true"
android:gravity="end"
android:textColor="@color/white_90pct"
android:textAllCaps="true"
android:text="@string/grade_indicator"/>

</LinearLayout>

<ListView
android:id="@+id/semesters_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/list_header"/>

</RelativeLayout>

Java 类(onCreateView)

LinearLayout emptyView = (LinearLayout) view.findViewById(R.id.empty);
emptyView.setOnClickListener(this);

我还尝试将下一个属性添加到 xml 但仍然无法正常工作:

android:focusableInTouchMode="true"
android:focusable="true"
android:descendantFocusability="blocksDescendants"

最佳答案

既然你已经指定了linearlayoutclickable,你只需要指定onClick事件的方法。

所以添加你的 linearLayouts xml,onClick 属性如下:(可能还需要 focusable)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:onClick="layoutClicked"
android:focusable="true"
android:gravity="center">

然后在你的代码中有相应的方法

 public void layoutClicked(View v)
{
// Your code here
}

关于android - 使布局可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com