我在布局中嵌入了一个片段。这个片段有一个非常简单的视图(基本上只是一个样式按钮,其按下状态是以编程方式设置的)。
当我从托管片段的活动开始一个新活动,然后按BACK返回原始活动时,按钮仍然被禁用,但现在显示其未按下状态。
layout.xml:
<?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="fill_parent"
android:orientation="vertical" >
<fragment
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
class="com.mypackage.NavigationDrawerFragment"
android:gravity="bottom"
android:padding="5dp" />>
</RelativeLayout>
fragment_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000000"
android:orientation="horizontal"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="10dp" >
<Button
android:id="@+id/nav_home"
style="@style/navigation_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableTop="@drawable/button_home"
android:text="HOME"
android:textColor="@drawable/button_text" />
</RelativeLayout>
在片段类中,我只需执行以下操作:
我的片段类:
public class NavigationDrawerFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mDrawer = inflater.inflate(R.layout.fragment_navigation_drawer,
container, false);
mButtonHome = (Button) mDrawer.findViewById(R.id.nav_home);
mButtonHome.setEnabled(false);
mButtonHome.setPressed(true);
}
}
知道为什么按钮的启用状态被保留,但是按下的状态不是?
答案 0 :(得分:0)
作为解决此问题的方法,我现在只禁用该按钮,并在我的drawable和颜色中添加了set_enabled =“false”状态。此状态与“按下”状态相同。
抽拉/ button_home.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_home_down" android:state_enabled="false"/> <!-- disabled state -->
<item android:drawable="@drawable/btn_home_down" android:state_pressed="true"/> <!-- pressed -->
<item android:drawable="@drawable/btn_home" /> <!-- default -->
</selector>
抽拉/ button_text.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:color="@color/button_down" android:state_enabled="false"/><!-- disabled state -->
<item android:color="@color/button_down" android:state_pressed="true"/> <!-- pressed -->
<item android:color="@color/button_up" /> <!-- default -->
</selector>
这基本上与在按钮上调用setEnabled(false)和setPressed(true)具有相同的效果。