仿知乎app登入介面(Material Design設計框架拿來就用的TexnInputLayout)
在我腦子裡還沒有Material Design這種概念,就我個人而言,PC端應用扁平化設計必須成為首選,手當其衝的兩款即時通訊旺旺和QQ早就完成UI扁平化的更新,然而客戶端扁平化的設計本身就存在天生的缺陷,手指和滑鼠箭頭最大的區別是在於前者有溫度和感覺的,好吧,能不能不要亂扯,這和Material Design有毛關係嗎,的確沒有,我想表達的還是Material Design會成為開發設計首選的一個趨勢。
關於Material Design,材料設計你大概已經知道了,它介於擬物於扁平(qq,旺旺PC端應用)之間的設計。Material Design有著自己的目標,不僅僅為了好看整體而已,它要讓不同裝置的螢幕表現出一直、美觀的視覺體驗以及互動。主要包括的控制元件有TabLayout、TextInputLayout、SwitchCompat、Card、SnackBar、BottomSheet、Shadows、FloatingActionButton、RecycleView、NavigationView....
之前知乎app的登入介面好像是這個效果。這裡我們就來體驗一下TextInputLayout的具體效果:最終的效果圖(在真機上有一定差距)如下:
這篇文章主要分為以下幾個部分
- 首先通過nuget引入xamarin.android.design.widget
- TextInputLayout佈局
- TextInputLayout文字框樣式修改
- 通過單擊事件驗證TextInputLayout文字框錯誤的提示
nuget引入xamarin.android.design.widget
TextInputLayout是設計相容包下的內容,Material Design僅支援android5.0及以上版本,當V7 AppCompat結合使用才能相容到android2.1。在引入design包時將自動引入V7相容包,就是引入Design即可如圖: TextInputLayout佈局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/color_primary"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="30dp" android:paddingLeft="40dp" android:paddingRight="40dp"> <TextView android:id="@+id/tvTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginBottom="50dp" android:gravity="center" android:text="登入" android:textSize="40sp" android:textColor="@color/color_white"/> <android.support.design.widget.TextInputLayout android:id="@+id/userNameContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/tvTitle" android:layout_marginTop="4dp"> <EditText android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/userName" android:inputType="textPassword" android:textColor="@color/color_white" android:textColorHint="@color/color_dedede" android:hint="userName"/> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/passWordContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:layout_below="@id/userNameContainer"> <EditText android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/passWord" android:inputType="textPassword" android:textColor="@color/color_white" android:hint="Password"/> </android.support.design.widget.TextInputLayout> <Button android:id="@+id/MyButton" android:layout_width="match_parent" android:layout_height="50dp" android:layout_below="@id/passWordContainer" android:text="@string/Hello"/> </RelativeLayout> </LinearLayout>
注意的是TextInputLayout內只能放TextView控制元件,並且不能單獨使用,只用佈局就可以實現這種獲取焦點hint上滑的動畫效果。當然這和你的介面要求還是有一定差距的,所以這TextView的一些樣式還需要自定義。
TextInputLayout文字框樣式修改
上面佈局的程式碼中可以發現,屬性textColorHint 並沒有效果,在style中設定才有效果。看一下Theme <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">#ffffff</item>
<item name="android:textColorHint">@color/color_dedede</item>
<item name="colorControlNormal">@color/color_dedede</item>
<item name="colorControlActivated">@color/color_white</item>
</style>
?colorAccent 是哪裡的顏色?是系統特定內容的顏色,類似的顏色statusBarColor、windowBackground,看這張圖你就明白了
文字沒有獲取焦點的文字顏色:android:textColorHint 下劃線沒有獲取焦點的顏色:colorControlNormal 下劃線獲取焦點的顏色:colorControlActivated TextInputLayout取值:不需要通過獲取TextView這樣的string userNameText = userName.EditText.Text;
通過事件驗證TextInputLayout文字框錯誤的提示
在客戶端必須的做欄位的驗證,所以我們通過TextView的TextChanged事件和FoucsChange事件來看看。 protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
TextInputLayout userName = FindViewById<TextInputLayout>(Resource.Id.userNameContainer);
TextInputLayout passWord= FindViewById<TextInputLayout>(Resource.Id.passWordContainer);
passWord.EditText.TextChanged += (s, e) =>
{
System.Diagnostics.Debug.WriteLine(e.Start);
System.Diagnostics.Debug.WriteLine(e.Text);
if (e.Start > 8)
{
passWord.ErrorEnabled = true;
passWord.Error = "密碼不能大於8位";
}
else
{
passWord.ErrorEnabled = false;
}
};
userName.EditText.FocusChange += (s, e) =>
{
if (!e.HasFocus)
{
if (ValidateTel(userName.EditText.Text))
{
userName.ErrorEnabled = false;
}
else
{
userName.ErrorEnabled = true;
userName.Error = "userName不正確";
}
}
};
}
private bool ValidateTel(string tel)
{
string matchReg = "^1[3|4|5|7|8][0-9]{9}$";
return System.Text.RegularExpressions.Regex.IsMatch(tel,matchReg);
}
雖然你也可以在TextInputLayout自帶的屬性帶實現這個效果,那樣太死板了。如果你真的要寫在Xml檔案裡你可以這樣的,首先在根佈局中新增 xmlns:app="http://schemas.android.com/apk/res-auto" 使用自帶控制元件的屬性。常見的屬性:
app:errorEnabled="true"app:counterEnabled="true"
app:counterMaxLength="4"
app:counterTextAppearance="@style/style1" 預設的文字框顏色和大小 app:counterOverflowTextAppearance="@style/style1" 超出計數預設的文字框顏色和大小。還有一些樣式也可以通過TextInputlayout自帶的屬性設定
作者:張林
標題:仿知乎app登入介面(Material Design設計框架拿來就用TexnInputLayout
轉載隨意註明出處相關推薦
仿知乎app登入介面(Material Design設計框架拿來就用的TexnInputLayout)
在我腦子裡還沒有Material Design這種概念,就我個人而言,PC端應用扁平化設計必須成為首選,手當其衝的兩款即時通訊旺旺和QQ早就完成UI扁平化的更新,然而客戶端扁平化的設計本身就存在天生的缺陷,手指和滑鼠箭頭最大的區別是在於前者有溫度和感覺的,好吧,能不能不要亂
實現知乎app的主介面效果
一、顯示效果 二、分析 很感謝軒轅的文章,學習了。實現這種效果先分析一下怎麼去實現。首先最上面的是一個自定義的ActionBar樣式。中間的側滑加主頁是利用DrawLayout控制元件來實現的。 這裡使用到ActionBar,為了向下相
APP登入介面(網頁仿製版)
//顯示登入視窗 function loginShow(o){ document.getElementById("move_div").style.display = "block"; docu
JAVA開源仿知乎問答原始碼
專案說明 FlyCms 是一個類似知乎以問答為基礎的完全開源的JAVA語言開發的社交網路建站程式,基於 Spring Boot+Bootstrap3+MyBatis+MYSQL+Solr 應用架構,專注於社群內容的整理、歸類和檢索,它集合了問答,digg,wiki 等多個程式的優點,幫助
Tesseract:識別知乎網站登入驗證碼
機器視覺 從 Google 的無人駕駛汽車到可以識別假鈔的自動售賣機,機器視覺一直都是一個應用廣 泛且具有深遠的影響和雄偉的願景的領域。 我們將重點介紹機器視覺的一個分支:文字識別,介紹如何用一些 Python庫來識別和使用線上圖片中的文字。
python 跨知乎app發私信以及Python專欄30萬用戶資訊爬取
import requests class SendMsg: def __init__(self): self.url='https://www.zhihu.com/api/v4/messages' #要傳送的資訊 self.data={'co
jjyq app登入介面報:“內容型別不支援”???
1.在 app上進行登入操作,成功。 2.通過fiddler抓包得到jjyq登入介面的url、param、header。 3.在pycharm中使用requests發起請求,執行報錯:內容型別不支援? import requests Logger=My_Log() class
Kotlin實現仿知乎底部導航欄顯示隱藏效果Behavior
最開始遇見這個問題我的第一想法是給recyclerview新增滑動監聽,然後再給底部導航新增顯示隱藏動畫,可是這麼做很不優雅,一旦recyclerview不止一個就需要給每個都新增一遍監聽(雖然同樣的程式碼cv就行了),這絕不是一個優秀程式設計師的追求。所以就
Python-requests-知乎模擬登入
繼續我的python爬蟲旅程,開始寫部落格的時候,說一天一篇,真的只是動動嘴皮子,做起來還真的難,其實是自己給自己找理由… 不管怎樣,今天來更新一篇,寫個知乎的模擬登入,感覺最開始學習爬蟲的時候,大家都期盼著可以寫那種需要登入的網站,或者有各種驗證碼的,那時
基於Material Design設計的分享文字圖片的APP
寫在前面:這個專案是自己當時為了準備面試而做的,由於時間匆忙,水平有限,專案多多少少存在一些問題。程式碼的整潔性與複用性,以及整體架構的搭建都不盡人意,大家看看裡面的一些效果就好。 Material Design–Google在I/O 2014上推出了
【2018.05.11】python3.6+selenium 知乎自動登入+驗證碼 問題
時隔這麼多年,驗證碼問題我解決了,這裡也能寫下,我就是懶得寫。哈哈 #coding = utf-8 ''' 自動登入知乎 出現了驗證碼的問題,待解決...... ''' import time from selenium import webdriver driver = w
scrapy知乎模擬登入和cookie登入
模擬登入# -*- coding: utf-8 -*- import scrapy from scrapy import cmdline #from scrapy.spiders import CrawlSpider import scrapy from scrap
仿知乎日報(3)_MainActivity分析
MainActivity分析 1、結構 2、介面分析 首先第一張圖片是主頁面,是一個Fragment。第二張圖片是左側滑選單,是一個ListView。整體介面是使用MaterialUI中的DrawableLayout佈局。關於Drawa
【專案原始碼】- 【模仿知乎日報二】吐血高仿知乎日報
對之前的模仿做品進行了改善改善。。。再改善。。。(僅供學習) 多說無益。。。。上圖才是王道: 這個東西越模仿發現他的東西就越多,離上次的模仿時間已經過去好久了,這一版本的介面看似好很多,但還是
仿知乎廣告效果
先放一張知乎的廣告截圖: 說下我的實現吧,主要利用RecyclerView,在需要出現廣告的時候,將這個item透明化,顯示 ImageView 就達到這種效果了。最主要是這個RecyclerView的分隔條,用了個三方的才最終達到理想的效果。 可能還是會和原知乎有點
【iOS】仿知乎日報,RxSwift-Part2-詳情頁的搭建
前言 在上一篇,我們搭建了首頁。而這篇,我們將開始搭建話題詳情頁。 分析 還是先來看下演示gif { "body": "<div class=\"main-wrap content-wrap\">\n<div cla
仿知乎日報(1)_緒論
匯入庫與專案結構分析 1、匯入庫 開源的迷人之處正在於“不用重複的造輪子”,使用開源庫能夠一定程度上加快我們開發的速度,推進軟體開發更快的發展。 在筆者的專案中使用了以下幾個開源庫 compile 'com.android.support:desig
仿知乎內容廣告欄 WindowImageView
作者 | Bleoo 地址 | http://www.jianshu.com/p/8c14fa566c52 宣告 | 本文是 Bleoo 原創,已獲授權釋出,未經原作者允許請勿轉載 前言 前幾天看到知乎裡的雙11廣告有這麼一個效果,就決定仿一個出來。 專案地址在 https://github.
vue低仿知乎日報
概述 一個基於vue的仿知乎日報的前端專案。 關於知乎日報: 知乎日報是一款擁有千萬使用者的資訊類客戶端,每日提供來自知乎社群的精選問答,還有國內一流媒體的專欄特稿。 主要功能 每天更新好文章,包括權威的時事解讀、有趣的生活建議 更符合使
微信小程式日記——高仿知乎日報(上)
該小程式的作者是Oopsguy,我也參與小功能的開發和完善,希望大家能支援一下 本人對知乎日報是情有獨鍾,看我的部落格和github就知道了,寫了幾個不同技術型別的知乎日報APP 要做微信小程式首先要對html,css,js有一定的基礎,還有對微信小