我目前正在开发一个支持NavigationView的Android应用程序.我不得不质疑我想要它:(1)我想将导航元素分成两个区域:一个位于标题下方,一个位于底端.(2)我想删除分隔符和它下面的元素之间的填充.
我知道有一种方法可以覆盖填充值,这将修复(2).但这感觉有点脏,也许还有另一种方法可以实现这两点.我的想法是获取"设置"元素并以编程方式更改其布局,但到目前为止,我还没有找到一种方法来实现这一点.或者我真的必须自己构建页脚?
另外,我不太确定我应该用Google搜索什么流行语.也许已经有一个简单的答案了.
我目前的代码.现在Activity内部没有布局更改,因此我没有添加它.
activity_main.xml中:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".main.MainActivity">
<!-- The content -->
<LinearLayout>...</LinearLayout>
<!-- The navigation drawer -->
<android.support.design.widget.NavigationView
android:id="@+id/main_navigationview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white"
app:headerLayout="@layout/mainnav_header"
app:itemBackground="@drawable/menu_background"
app:itemIconTint="@color/menu_text"
app:itemTextColor="@color/menu_text"
app:menu="@menu/maindrawer">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
menu.xml文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:id="@+id/main_drawer_menu1" android:checkableBehavior="single">
<item
android:id="@+id/main_navigationview_request"
android:checkable="false"
android:enabled="false"
android:icon="@drawable/ic_navigationdrawer_request"
android:title="@string/main_navigation_request"
app:actionLayout="@layout/menuitem_default" />
<item
android:id="@+id/main_navigationview_invitations"
android:checked="true"
android:icon="@drawable/ic_navigationdrawer_invitations"
android:title="@string/main_navigation_invitations"
app:actionLayout="@layout/menuitem_default" />
<item
android:id="@+id/main_navigationview_prev"
android:icon="@drawable/ic_navigationdrawer_previous"
android:title="@string/main_navigation_previnvites"
app:actionLayout="@layout/menuitem_default" />
<item
android:id="@+id/main_navigationview_info"
android:icon="@drawable/ic_navigationdrawer_info"
android:title="@string/main_navigation_info"
app:actionLayout="@layout/menuitem_default" />
</group>
<group android:id="@+id/main_drawer_menu2" android:checkableBehavior="single">
<item
android:id="@+id/main_navigationview_settings"
android:checked="true"
android:icon="@drawable/ic_navigationdrawer_settings" …Run Code Online (Sandbox Code Playgroud) 我们构建了一个 React Native 平板电脑亭应用程序,它向前台的用户显示多页输入字段。用户必须填写所有表格并在最后发送它们。
用户可以随时离开信息亭,这将导致他们的最后一个屏幕成为下一个用户的“欢迎屏幕”。为避免这种情况,如果没有用户交互(屏幕上的任何触摸事件),应用程序会在一段时间后重置。
现在,我们使用倒计时并在每个输入字段、按钮和背景触摸上重置它。这导致将重置回调传递给许多组件。它有效,但它只是很多冗余,很容易导致错误。
有没有什么办法,我们可以在view的最上面加一个overlay,可以捕获所有的touch事件并调用reset回调,同时也可以将touch事件传递给下面的views?因此,当用户单击按钮时,覆盖层会调用其回调,但也会单击按钮(输入字段等也是如此)。
我们还尝试了手势响应系统,但无法让触摸事件通过——它总是被带有手势响应系统的组件所消耗。
我目前正在尝试在Android中实现一个ListView,其中包含带有图标和描述文本的行.当用户按下一行时,背景颜色应该改变,图标应该被替换,如下图所示.
使用选择器更改背景没有问题.但我只是想不出一个简单的方法来改变图标.我尝试的是添加2个相互重叠的图标:
<RelativeLayout
android:layout_width="50dp"
android:layout_height="50dp"
android:padding="10dp" >
<ImageView
android:id="@+id/general_list_item_icon"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerInside" />
<ImageView
android:id="@+id/general_list_item_icon_active"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
然后我在每个ImageView中放置一个drawable,并希望在用户按下该行时切换可见性.是否有可能使用类似于背景的选择器来执行此操作?
另外:由于ListView是动态填充的,因此使用带有静态可绘制引用的选择器不起作用.
android listview visibility android-imageview android-selector
android ×2
android-menu ×1
listview ×1
overlay ×1
react-native ×1
touch ×1
touch-event ×1
visibility ×1