2017-02-22 49 views
0

我正在寻找如何改变点击的gridview的项目的背景颜色被点击它,然后回到正常的颜色Xamarin的Android:点击

我想,当,当更改一个GridView项的背景颜色我点击,我gridview项目的背景颜色是橙色,然后很短的时间后,背景再次变成白色。

这是我发现的但“设备”未知。

e.View.SetBackgroundColor(Color.White); 
Device.StartTimer(TimeSpan.FromSeconds(0.25),() => 
{ 
    e.View.SetBackgroundColor(Color.Orange); 
    return false; 
}); 

我尝试这样做:

1)通过在值

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<color name="pressed_color">#972234</color> 
<color name="default_color">#000000</color> 
</resources> 

2创建colors.xml定义颜色)创建在抽拉

<?xml version="1.0" encoding="utf-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_selected="true" 
    android:drawable="@color/pressed_color"/> 
<item 
    android:state_pressed="true" 
    android:drawable="@color/pressed_color"/> 
<item 
    android:drawable="@color/default_color" /> 
</selector> 

3 bg_key.xml)将android:listSelector和listSelector设置为GridView

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/gridview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:columnWidth="90dp" 
     android:numColumns="auto_fit" 
     android:verticalSpacing="10dp" 
     android:horizontalSpacing="10dp" 
     android:stretchMode="columnWidth" 
     android:gravity="center" 

     android:listSelector="@drawable/bg_key" 
     android:background="@color/default_color" 

     /> 

它正在我的侧面菜单上,但不是在我的gridview上......我的网格视图是由ImageView和TextView组成的吗?

此外,我应该改变(我的侧边菜单)改变字体颜色,而不是背景颜色?

回答

0

您不能使用Device-Class,因为它只在Xamarin.Forms中可用,而不在本机中提供Xamarin。

但是你可以使用System.Timers.Timer类来改变颜色经过一段时间后回:

var t = new System.Timers.Timer(); 
t.Interval = 250; // In miliseconds 
t.Elapsed += (sender, args) => 
{ 
    // Change color back on the UI-Thread 
    RunOnUiThread(() => 
    { 
     e.View.SetBackgroundColor(Color.Orange);   
    }); 

}; 
t.Start(); 

重要提示:Elapsed - 活动是NOT invoked on the UI-Thread。所以要改变用户界面上的东西(就像你的背景颜色),你需要在UI线程上做这件事。

+0

我不知道为什么,但它不eather工作... – Kurapika

+0

我的心灵感应能力都不甚理想......请解释清楚你有什么试过,发生了什么事。否则,我们无法为您提供帮助 – Joehl

+0

我尝试过您发布的内容并且颜色不变。我是Xamarin的新手,所以也许我没有把它写在好的地方,我写在这里:'gridView.ItemClick + =(s,e)=> var t = new System.Timers.Timer() ; t.Interval = 250; //在毫秒 t.Elapsed + =(发件人,参数)=> { RunOnUiThread(()=> { e.View.SetBackgroundColor(Color.Orange); }); }; t.Start(); };' – Kurapika

0

Device.StartTimer用于Xamarin.Forms使用设备时钟功能启动一个循环计时器。它不适用于本机。

我更喜欢你可以制作一个自定义样式。


试试这个:

1)values

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="pressed_color">#972234</color> 
    <color name="default_color">#000000</color> 
</resources> 

2)创建bg_key.xml通过创建colors.xml定义颜色在drawable

<?xml version="1.0" encoding="utf-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_selected="true" 
     android:drawable="@color/pressed_color"/> 
    <item 
     android:state_pressed="true" 
     android:drawable="@color/pressed_color"/> 
    <item 
     android:drawable="@color/default_color" /> 
</selector> 

3)设置android:listSelector和listSelector到格查看

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/gridview" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:columnWidth="90dp" 
      android:numColumns="auto_fit" 
      android:verticalSpacing="10dp" 
      android:horizontalSpacing="10dp" 
      android:stretchMode="columnWidth" 
      android:gravity="center" 

      android:listSelector="@drawable/bg_key" 
      android:background="@color/default_color" 

      /> 
+0

它不工作eather,颜色不会改变...网格视图中的项目由inageView和TextView组成,是它的问题吗? – Kurapika

+0

因为它在我的菜单项上工作,所以我猜它一定是因为TextView和ImageView的权利? – Kurapika

+0

提供你的工作的一小部分,所以我可以通过它。 – Vaikesh

0

这里是我的代码:

主。axml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#EBEAEF"> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/actionBarSize" 
    android:paddingLeft="5dp" 
    android:background="#282059" 
    android:title="test" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" /> 
<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 
<!-- The Main Content View --> 
    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <ImageView 
      android:id="@+id/logoBackgroud" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:src="@drawable/icon_background" /> 
     <GridView 
      android:id="@+id/grid_view_image_text" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:columnWidth="350dp" 
      android:layout_margin="10dp" 
      android:gravity="center" 
      android:numColumns="auto_fit" /> 
    </RelativeLayout> 

gridview.axml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#EBEAEF"> 
<RelativeLayout 
    android:layout_height="90dp" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:layout_margin="25dp" 
    android:listSelector="@drawable/bg_key" 
    android:background="#F4F4F6"> 
<!-- Letter yellow color = #FAB322 --> 
    <TextView 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_width="95dp" 
     android:layout_height="fill_parent" 
     android:textSize="66sp" 
     android:textColor="#0071CF" 
     android:background="@color/white" 
     android:layout_centerVertical="true" 
     android:layout_gravity="left" 
     android:gravity="center_vertical|center_horizontal" 
     android:text="A" 
     android:paddingBottom="5dp" 
     android:id="@+id/textViewLetter" /> 
    <TextView 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:paddingLeft="15dp" 
     android:layout_toRightOf="@+id/textViewLetter" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="35dp" 
     android:textSize="22sp" 
     android:gravity="center_vertical" 
     android:background="#F4F4F6" 
     android:textColor="#262057" 
     android:textStyle="bold" 
     android:listSelector="@drawable/bg_key" 
     android:id="@+id/textViewFileName" /> 
    <ImageView 
     android:layout_width="35dp" 
     android:layout_height="wrap_content" 
     android:paddingTop="5dp" 
     android:layout_alignParentRight="true" 
     android:id="@+id/imageViewIcon" /> 
</RelativeLayout> 
</LinearLayout> 
+0

@Vaikesh这里是我的代码:) – Kurapika